Ah, thanks, folks!

I'll just implement my own hashing by generating a string and calling the
hash function on that. That's what I was doing in the old version of my
code, anyway.

It's just that in the core Data.HashTable, you had to provide a hash
function, so the point where I used the hash table was able to call a
string conversion function that was defined elsewhere.

With the hashtable package, you have to define a Hashable instance in the
same package as your datatype definition - which is not where the string
conversion is implemented. Calling the string conversion function leads to
a cyclic dependency that I wanted to avoid. So I'll have to maybe move it
to live with the datatype definition, or duplicate it, or use some other
means of hashing.

In other words, package A defines datatype A. Package B defines A ->
String. Package C creates a HashTable that indexes by As, and also imports
package B, so it can build a hash function as the composition of the string
conversion and the provided string hashing.

But now I need to define the Hashable instance in A, which doesn't have
access to package B, since package B also depends on A, and I don't like
circular dependencies.

- Lyle
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to