
Ugh, replying to myself... Obviously, the following contains a few mistakes...: On Wed, Nov 10, 2004 at 11:34:32AM +0100, R. Turk wrote:
{-# OPTIONS -fglasgow-exts #-} {- I want a Hashable instance for String ;) -} import Data.FiniteMap import Data.HashTable (hashInt, hashString) import Data.Int (Int32)
class Hashable a where hash :: a -> Hash instance Hashable Int where hash = hashInt instance Hashable String where hash = hashString
type Hash = Int32 newtype HashTable a b = HT (FiniteMap Hash [b]) newtype HashTable a b = HT (FiniteMap Hash [(a,b)])
emptyHT :: HashTable a b emptyHT = HT emptyFM
addToHT :: (Hashable a) => HashTable a b -> a -> b -> HashTable a b addToHT (HT m) k v = HT $ addToFM_C (flip (++)) m (hash k) [v]
addToHT (HT m) k v = HT $ addToFM_C (flip (++)) m (hash k) [(k,v)] -- Nobody can be exactly like me. Even I have trouble doing it.