Data.Digest.Murmur64

murmur-hash-0.1.0.9: MurmurHash2 implementation for Haskell.

Copyright | (c) Thomas Schilling 2010
License | BSD-style
Maintainer | nominolo@gmail.com
Stability | experimental
Portability | portable
Safe Haskell | Safe
Language | Haskell98

Data.Digest.Murmur64

Description

Type class and primitives for constructing 64 bit hashes using the MurmurHash2 algorithm. See http://murmurhash.googlepages.com for details on MurmurHash2.

Synopsis

- data Hash64
- asWord64 :: Hash64 -> Word64
- class Hashable64 a where
- hash64AddWord64 :: Word64 -> Hash64 -> Hash64
- hash64AddInt :: Int -> Hash64 -> Hash64
- hash64 :: Hashable64 a => a -> Hash64
- hash64WithSeed :: Hashable64 a => Word64 -> a -> Hash64
- combine :: (Hash64 -> Hash64) -> (Hash64 -> Hash64) -> Hash64 -> Hash64

# Documentation

data Hash64 #

A 64 bit hash.

Instances

Bounded Hash64 # |
Methods minBound :: Hash64 # maxBound :: Hash64 #
Eq Hash64 # |
Methods (==) :: Hash64 -> Hash64 -> Bool # (/=) :: Hash64 -> Hash64 -> Bool #
Ord Hash64 # |
Methods compare :: Hash64 -> Hash64 -> Ordering # (<) :: Hash64 -> Hash64 -> Bool # (<=) :: Hash64 -> Hash64 -> Bool # (>) :: Hash64 -> Hash64 -> Bool # (>=) :: Hash64 -> Hash64 -> Bool # max :: Hash64 -> Hash64 -> Hash64 # min :: Hash64 -> Hash64 -> Hash64 #
Show Hash64 # |
Methods showsPrec :: Int -> Hash64 -> ShowS # show :: Hash64 -> String # showList :: [Hash64] -> ShowS #

asWord64 :: Hash64 -> Word64 #

Extract 64 bit word from hash.

class Hashable64 a where #

Minimal complete definition

hash64Add

Methods

hash64Add :: a -> Hash64 -> Hash64 #

Instances

Hashable64 Bool # |
Methods hash64Add :: Bool -> Hash64 -> Hash64 #
Hashable64 Char # |
Methods hash64Add :: Char -> Hash64 -> Hash64 #
Hashable64 Int # |
Methods hash64Add :: Int -> Hash64 -> Hash64 #
Hashable64 Integer # |
Methods hash64Add :: Integer -> Hash64 -> Hash64 #
Hashable64 Word64 # |
Methods hash64Add :: Word64 -> Hash64 -> Hash64 #
Hashable64 () # |
Methods hash64Add :: () -> Hash64 -> Hash64 #
Hashable64 ByteString # |
Methods hash64Add :: ByteString -> Hash64 -> Hash64 #
Hashable64 ByteString # |
Methods hash64Add :: ByteString -> Hash64 -> Hash64 #
Hashable64 a => Hashable64 [a] # |
Methods hash64Add :: [a] -> Hash64 -> Hash64 #
Hashable64 a => Hashable64 (Maybe a) # |
Methods hash64Add :: Maybe a -> Hash64 -> Hash64 #
(Hashable64 a, Hashable64 b) => Hashable64 (Either a b) # |
Methods hash64Add :: Either a b -> Hash64 -> Hash64 #
(Hashable64 a, Hashable64 b) => Hashable64 (a, b) # |
Methods hash64Add :: (a, b) -> Hash64 -> Hash64 #
(Hashable64 a, Hashable64 b, Hashable64 c) => Hashable64 (a, b, c) # |
Methods hash64Add :: (a, b, c) -> Hash64 -> Hash64 #
(Hashable64 a, Hashable64 b, Hashable64 c, Hashable64 d) => Hashable64 (a, b, c, d) # |
Methods hash64Add :: (a, b, c, d) -> Hash64 -> Hash64 #

hash64AddWord64 :: Word64 -> Hash64 -> Hash64 #

Add a 64 bit word to the hash.

hash64AddInt :: Int -> Hash64 -> Hash64 #

hash64 :: Hashable64 a => a -> Hash64 #

Create a hash using the default seed.

hash64WithSeed :: Hashable64 a => Word64 -> a -> Hash64 #

Create a hash using a custom seed. h The seed should be non-zero, but other than that can be an arbitrary number. Different seeds will give different hashes, and thus (most likely) different hash collisions.

combine :: (Hash64 -> Hash64) -> (Hash64 -> Hash64) -> Hash64 -> Hash64 #

Combine two hash generators. E.g.,

      hashFoo (Foo a) = hash64AddInt 1 combine hash64Add a