thash-0.1ContentsIndex
Data.THash
Portabilitynon-portable (requires STM)
Stabilityexperimental
MaintainerEdward Kmett <ekmett@gmail.com>
Description
A simple STM — unavailable from the original server (HTTP 404) 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 — unavailable from the original server (HTTP 404) 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