thash-0.1ContentsIndex
Data.THash
Portabilitynon-portable (requires STM)
Stabilityexperimental
MaintainerEdward Kmett <ekmett@gmail.com>
Description
A simple STM based transactional linear hash table based on Witold 1980. This wraps a Data.THash.THT in an simple container. It may be more appropriate to use the underlying THT structure directly if you are nesting these. The performance hit hasn't yet been measured.
Synopsis
data THash k v
new :: (k -> Int) -> STM (THash k v)
newH :: Hashable k => STM (THash k v)
fromList :: Eq k => (k -> Int) -> [(k, v)] -> STM (THash k v)
insert :: Eq k => THash k v -> k -> v -> STM Bool
update :: Eq k => THash k v -> k -> v -> STM ()
modify :: Eq k => THash k v -> k -> (Maybe v -> v) -> STM ()
delete :: Eq k => THash k v -> k -> STM Bool
lookup :: Eq k => THash k v -> k -> STM (Maybe v)
mapH :: ((k, v) -> r) -> THash k v -> STM [r]
each :: THash k v -> STM [(k, v)]
keys :: THash k v -> STM [k]
values :: THash k v -> STM [v]
hashInt :: Int -> Int
Documentation
data THash k v
A hash with keys of type k to values of type v
new :: (k -> Int) -> STM (THash k v)
Build an empty hash table
newH :: Hashable k => STM (THash k v)
Build an empty hash table using the default hash function for the key type.
fromList :: Eq k => (k -> Int) -> [(k, v)] -> STM (THash k v)
Build a hash table from a list of (key,value) pairs
insert :: Eq k => THash k v -> k -> v -> STM Bool
Insert a value into the hash table. If a value with the key is present then nothing is changed and False is returned.
update :: Eq k => THash k v -> k -> v -> STM ()
Insert a value into the hash table, replacing any value with the same key that is present.
modify :: Eq k => THash k v -> k -> (Maybe v -> v) -> STM ()
Update a value in the hash table using the supplied function.
delete :: Eq k => THash k v -> k -> STM Bool
Remove a value from the hash table. Returns True to indicate success.
lookup :: Eq k => THash k v -> k -> STM (Maybe v)
Lookup a value in the hash table.
mapH :: ((k, v) -> r) -> THash k v -> STM [r]
Map a function over all (key,value) functions in the hash table.
each :: THash k v -> STM [(k, v)]
each = mapH id and returns all (key,value) pairs in the hash.
keys :: THash k v -> STM [k]
each = mapH fst and returns all keys in the hash.
values :: THash k v -> STM [v]
each = mapH snd and returns all values present in the hash.
hashInt :: Int -> Int
Thomas Wang's 32 bit mix function; more effective than a prime modulus for declustering a linear hash, but not good against an adversary, since its easily reversed.
Produced by Haddock version 0.7