
Data.BloomFilter.Hash  Portability  portable  Stability  unstable  Maintainer  Bryan O'Sullivan <bos@serpentine.com> 





Description 
Fast hashing of Haskell values. The hash functions used are Bob
Jenkins's public domain functions, which combine high performance
with excellent mixing properties. For more details, see
http://burtleburtle.net/bob/hash/.
In addition to the usual one input, one output hash functions,
this module provides multioutput hash functions, suitable for use
in applications that need multiple hashes, such as Bloom filtering.


Synopsis 




Basic hash functionality



 Methods   :: a  value to hash
 > CInt  salt value
 > IO CInt   Compute a single hash of a value. The salt value perturbs
the result.

   :: a  value to hash
 > CInt  first salt value
 > CInt  second salt value
 > IO (CInt, CInt)   Compute two hashes of a value. The first salt value perturbs
the first element of the result, and the second salt perturbs
the second.


  Instances  Hashable Bool  Hashable Char  Hashable Double  Hashable Float  Hashable Int  Hashable Int8  Hashable Int16  Hashable Int32  Hashable Int64  Hashable Integer  Hashable Ordering  Hashable Word8  Hashable Word16  Hashable Word32  Hashable Word64  Hashable ()  Hashable ByteString  Hashable ByteString  Storable a => Hashable ([] a)  Hashable a => Hashable (Maybe a)  (Hashable a, Hashable b) => Hashable (Either a b)  (Hashable a, Hashable b) => Hashable ((,) a b)  (Hashable a, Hashable b, Hashable c) => Hashable ((,,) a b c)  (Hashable a, Hashable b, Hashable c, Hashable d) => Hashable ((,,,) a b c d)  (Hashable a, Hashable b, Hashable c, Hashable d, Hashable e) => Hashable ((,,,,) a b c d e) 




Compute a hash.


Compute a family of hash values



:: Hashable a   => Int  number of hashes to compute
 > a  value to hash
 > [Word32]   Compute a list of hashes. The value to hash may be inspected as
many times as there are hashes requested.




:: Hashable a   => Int  number of hashes to compute
 > a  value to hash
 > [Word32]   Compute a list of hashes relatively cheaply.
The value to hash is inspected at most twice, regardless of the
number of hashes requested.
We use a variant of Kirsch and Mitzenmacher's technique from "Less
Hashing, Same Performance: Building a Better Bloom Filter",
http://www.eecs.harvard.edu/~kirsch/pubs/bbbf/esa06.pdf.
Where Kirsch and Mitzenmacher multiply the second hash by a
coefficient, we shift right by the coefficient. This offers better
performance (as a shift is much cheaper than a multiply), and the
low order bits of the final hash stay well mixed.



Hash functions for Storable instances



Compute a hash of a Storable instance.



Compute two hashes of a Storable instance.



Compute a hash of a list of Storable instances.



Compute two hashes of a list of Storable instances.


Produced by Haddock version 2.4.2 