This module provides wrappers in
IO around the functions from
Data.HashTable.Class.
This module exports three concrete hash table types, one for each hash
table implementation in this package:
type BasicHashTable k v = IOHashTable (B.HashTable) k v
type CuckooHashTable k v = IOHashTable (Cu.HashTable) k v
type LinearHashTable k v = IOHashTable (L.HashTable) k v
The
IOHashTable type can be thought of as a wrapper around a
concrete hashtable type, which sets the
ST monad state type
to
PrimState IO, a.k.a.
RealWorld:
type IOHashTable tabletype k v = tabletype (PrimState IO) k v
This module provides
stToIO wrappers around the hashtable
functions (which are in
ST) to make it convenient to use them
in
IO. It is intended to be imported qualified and used with a
user-defined type alias, i.e.:
import qualified Data.HashTable.IO as H
type HashTable k v = H.CuckooHashTable k v
foo :: IO (HashTable Int Int)
foo = do
ht <- H.new
H.insert ht 1 1
return ht
Essentially, anywhere you see
IOHashTable h k v in the
type signatures below, you can plug in any of
BasicHashTable k v,
CuckooHashTable k
v, or
LinearHashTable k v.