Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Data.BloomFilter.Hash
Description
Fast hashing of Haskell values. The hash used is XXH3 64bit.
Synopsis
- type Hash = Word64
- class Hashable a where
- hashSalt64 :: Word64 -> a -> Word64
- hash64 :: Hashable a => a -> Word64
- hashByteArray :: ByteArray -> Int -> Int -> Word64 -> Word64
- class Incremental a where
- data HashState s
- incrementalHash :: Word64 -> (forall s. HashState s -> ST s ()) -> Word64
- class Hashes h where
- makeHashes :: Hashable a => a -> h a
- evalHashes :: h a -> Int -> Hash
- newtype RealHashes a = RealHashes (Word64 -> Hash)
- data CheapHashes a = CheapHashes !Hash !Hash
- evalCheapHashes :: CheapHashes a -> Int -> Hash
- makeCheapHashes :: Hashable a => a -> CheapHashes a
Basic hash functionality
class Hashable a where Source #
The class of types that can be converted to a hash value.
The instances are meant to be stable, the hash values can be persisted.
Methods
Compute a 64-bit hash of a value.
Instances
Hashable ByteArray Source # | |
Defined in Data.BloomFilter.Hash | |
Hashable Word32 Source # | |
Defined in Data.BloomFilter.Hash | |
Hashable Word64 Source # | |
Defined in Data.BloomFilter.Hash | |
Hashable ByteString Source # | |
Defined in Data.BloomFilter.Hash Methods hashSalt64 :: Word64 -> ByteString -> Word64 Source # | |
Hashable ByteString Source # | |
Defined in Data.BloomFilter.Hash Methods hashSalt64 :: Word64 -> ByteString -> Word64 Source # | |
Hashable () Source # | |
Defined in Data.BloomFilter.Hash Methods hashSalt64 :: Word64 -> () -> Word64 Source # | |
Hashable Char Source # | |
Defined in Data.BloomFilter.Hash | |
Hashable a => Hashable [a] Source # | |
Defined in Data.BloomFilter.Hash Methods hashSalt64 :: Word64 -> [a] -> Word64 Source # | |
(Hashable a, Hashable b) => Hashable (a, b) Source # | |
Defined in Data.BloomFilter.Hash Methods hashSalt64 :: Word64 -> (a, b) -> Word64 Source # |
Incremental hashing
class Incremental a where Source #
The class of types that can be incrementally hashed.
Instances
incrementalHash :: Word64 -> (forall s. HashState s -> ST s ()) -> Word64 Source #
Calculate incrementally constructed hash.
Hashing
A type class abstracting over different hashing schemes.b
Instances
Hashes (CheapHashes :: Type -> Type) Source # | |
Defined in Data.BloomFilter.Hash Methods makeHashes :: Hashable a => a -> CheapHashes a Source # evalHashes :: CheapHashes a -> Int -> Hash Source # | |
Hashes (RealHashes :: Type -> Type) Source # | |
Defined in Data.BloomFilter.Hash Methods makeHashes :: Hashable a => a -> RealHashes a Source # evalHashes :: RealHashes a -> Int -> Hash Source # |
newtype RealHashes a Source #
A closure of real hashing function.
Constructors
RealHashes (Word64 -> Hash) |
Instances
Hashes (RealHashes :: Type -> Type) Source # | |
Defined in Data.BloomFilter.Hash Methods makeHashes :: Hashable a => a -> RealHashes a Source # evalHashes :: RealHashes a -> Int -> Hash Source # |
Compute a family of hash values
data CheapHashes a Source #
A pair of hashes used for a double hashing scheme.
See evalCheapHashes
.
Constructors
CheapHashes !Hash !Hash |
Instances
evalCheapHashes :: CheapHashes a -> Int -> Hash Source #
Evalute CheapHashes
family.
\[ g_i = h_0 + \left\lfloor h_1 / 2^i \right\rfloor \]
makeCheapHashes :: Hashable a => a -> CheapHashes a Source #
Create CheapHashes
structure.
It's simply hashes the value twice using seed 0 and 1.