
Hi Gregory,
I was wondering about that, because of the following:
[1 of 1] Compiling Main ( hash1.hs, interpreted )
Ok, modules loaded: Main.
*Main> ht <- new (==) dummy :: IO MyHashTable
*Main> dummy "mike"
7
*Main> dummy "michael"
7
*Main> insert ht "mike" 1
*Main> toList ht
[("mike",1)]
*Main> insert ht "michael" 2
*Main> toList ht
[("michael",2),("mike",1)]
*Main> insert ht "miguel" 3
*Main> toList ht
[("miguel",3),("michael",2),("mike",1)]
*Main> :t dummy "miguel"
dummy "miguel" :: Int32
*Main>
It seems my dummy function is being ignored. I figured I would only be able to store a single value with a hash function that always returns 7. Why ask for a hash function and not use it?
Also, it's said that it is good programming practice to include type
information in function definitions, so I always try to do that, even
though it usually leads to my code being rejected. I need to step back
and use the :t and module functions defs to figure out what types are
returned and required as arguments, instead of trying to puzzle it out
myself.
Like juggling, there's a lot of balls in the air w/Haskell, lots of things to remember, but it's the most intriguing computer language I've looked at in a long time.
Thanks for your input.
Michael
--- On Tue, 11/17/09, Gregory Crosswhite
What you probably wanted was
type MyHashTable = HashTable String Int -- not data MyHashTable
Just in case it's not clear:
ht <- new (==) dummy :: IO MyHashTable
only works at the prompt or in an IO do-block, not at the top level of the module.
then ht is a hashtable of type MyHashTable.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe