-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A class for types that can be converted to a hash value -- -- This package defines a class, Hashable, for types that can be -- converted to a hash value. This class exists for the benefit of -- hashing-based data structures. The package provides instances for -- basic types and a way to combine hash values. @package hashable @version 1.2.2.0 -- | This module defines a class, Hashable, for types that can be -- converted to a hash value. This class exists for the benefit of -- hashing-based data structures. The module provides instances for most -- standard types. Efficient instances for other types can be generated -- automatically and effortlessly using the generics support in GHC 7.2 -- and above. -- -- The easiest way to get started is to use the hash function. -- Here is an example session with ghci. -- --
--   ghci> import Data.Hashable
--   ghci> hash "foo"
--   60853164
--   
module Data.Hashable -- | The class of types that can be converted to a hash value. -- -- Minimal implementation: hashWithSalt. class Hashable a where hash = hashWithSalt defaultSalt hashWithSalt salt = ghashWithSalt salt . from hashWithSalt :: Hashable a => Int -> a -> Int hash :: Hashable a => a -> Int -- | Transform a value into a Hashable value, then hash the -- transformed value using the given salt. -- -- This is a useful shorthand in cases where a type can easily be mapped -- to another type that is already an instance of Hashable. -- Example: -- --
--   data Foo = Foo | Bar
--            deriving (Enum)
--   
--   instance Hashable Foo where
--       hashWithSalt = hashUsing fromEnum
--   
hashUsing :: Hashable b => (a -> b) -> Int -> a -> Int -- | Compute a hash value for the content of this pointer. hashPtr :: Ptr a -> Int -> IO Int -- | Compute a hash value for the content of this pointer, using an initial -- salt. -- -- This function can for example be used to hash non-contiguous segments -- of memory as if they were one contiguous segment, by using the output -- of one hash as the salt for the next. hashPtrWithSalt :: Ptr a -> Int -> Int -> IO Int -- | Compute a hash value for the content of this ByteArray#, -- beginning at the specified offset, using specified number of bytes. hashByteArray :: ByteArray# -> Int -> Int -> Int -- | Compute a hash value for the content of this ByteArray#, using -- an initial salt. -- -- This function can for example be used to hash non-contiguous segments -- of memory as if they were one contiguous segment, by using the output -- of one hash as the salt for the next. hashByteArrayWithSalt :: ByteArray# -> Int -> Int -> Int -> Int