data-hash-0.2.0.1: Combinators for building fast hashing functions.
LicenseBSD-style
Maintainerjcpetruzza@gmail.com
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell98

Data.Hash

Description

Combinators for building fast hashing functions.

Based on the BuzHash algorithm by Robert Uzgalis (see, e.g. "Hashing concepts and the Java programming language" at http://www.serve.net/buz/hash.adt/java.000.html)

Synopsis

The Hash type

data Hash Source #

A 64-bit hash

Instances

Instances details
Bounded Hash Source # 
Instance details

Defined in Data.Hash.Base

Show Hash Source # 
Instance details

Defined in Data.Hash.Base

Methods

showsPrec :: Int -> Hash -> ShowS

show :: Hash -> String

showList :: [Hash] -> ShowS

Eq Hash Source # 
Instance details

Defined in Data.Hash.Base

Methods

(==) :: Hash -> Hash -> Bool

(/=) :: Hash -> Hash -> Bool

Ord Hash Source # 
Instance details

Defined in Data.Hash.Base

Methods

compare :: Hash -> Hash -> Ordering

(<) :: Hash -> Hash -> Bool

(<=) :: Hash -> Hash -> Bool

(>) :: Hash -> Hash -> Bool

(>=) :: Hash -> Hash -> Bool

max :: Hash -> Hash -> Hash

min :: Hash -> Hash -> Hash

asWord64 :: Hash -> Word64 Source #

Basic combinators

hashWord8 :: Word8 -> Hash Source #

combine :: Hash -> Hash -> Hash Source #

h1 `combine` h2 combines hashes h1 and h2 into a new hash.

It is used to generate hash functions for complex types. For example:

hashPair :: (Hashable a, Hashable b) => (a,b) -> Hash
hashPair (a,b) = hash a `combine` hash b

Derived combinators

hashWord16 :: Word16 -> Hash Source #

hashWord32 :: Word32 -> Hash Source #

hashWord64 :: Word64 -> Hash Source #

hashInt :: Int -> Hash Source #

hashStorable :: Storable a => a -> Hash Source #

Observe that, unlike the other functions in this module, hashStorable is machine-dependent (the computed hash depends on endianness, etc.).

hashFoldable :: (Foldable t, Hashable a) => t a -> Hash Source #

The Hashable class

class Hashable a where Source #

Methods

hash :: a -> Hash Source #

Instances

Instances details
Hashable Int16 Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Int16 -> Hash Source #

Hashable Int32 Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Int32 -> Hash Source #

Hashable Int64 Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Int64 -> Hash Source #

Hashable Int8 Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Int8 -> Hash Source #

Hashable Word16 Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Word16 -> Hash Source #

Hashable Word32 Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Word32 -> Hash Source #

Hashable Word64 Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Word64 -> Hash Source #

Hashable Word8 Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Word8 -> Hash Source #

Hashable Integer Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Integer -> Hash Source #

Hashable () Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: () -> Hash Source #

Hashable Bool Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Bool -> Hash Source #

Hashable Char Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Char -> Hash Source #

Hashable Double Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Double -> Hash Source #

Hashable Float Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Float -> Hash Source #

Hashable Int Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Int -> Hash Source #

Hashable Word Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Word -> Hash Source #

(Integral a, Hashable a) => Hashable (Ratio a) Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Ratio a -> Hash Source #

Hashable a => Hashable (Maybe a) Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Maybe a -> Hash Source #

Hashable a => Hashable [a] Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: [a] -> Hash Source #

(Hashable a, Hashable b) => Hashable (Either a b) Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: Either a b -> Hash Source #

(Hashable a, Hashable b) => Hashable (a, b) Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: (a, b) -> Hash Source #

(Hashable a, Hashable b, Hashable c) => Hashable (a, b, c) Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: (a, b, c) -> Hash Source #

(Hashable a, Hashable b, Hashable c, Hashable d) => Hashable (a, b, c, d) Source # 
Instance details

Defined in Data.Hash.Instances

Methods

hash :: (a, b, c, d) -> Hash Source #

Rolling hashes