Module Containers.Hash

module Hash: CCHash


Definitions


type t = int 
A hash value is a positive integer
type state 
State required by the hash function.
Since 0.16 the state is abstract, for more flexibility
type 'a hash_fun = 'a -> state -> state 
Hash function for values of type 'a, merging a fingerprint of the value into the state of type t

Applying Hash


val init : state
Initial value
val finish : state -> int
Extract a usable hash value
val apply : 'a hash_fun -> 'a -> int
Apply a hash function to a value. apply f x is the same as finish (f x init)

Basic Combinators

Those combinators have been renamed in 0.13, so as to remove the trailing "_". They are now defined by the application of CCHash.Make

val bool_ : bool hash_fun
Deprecated.use bool
val char_ : char hash_fun
Deprecated.use char
val int_ : int hash_fun
Deprecated.use int
val string_ : string hash_fun
Deprecated.use string
val int32_ : int32 hash_fun
Deprecated.use int32
val int64_ : int64 hash_fun
Deprecated.use int64
val nativeint_ : nativeint hash_fun
Deprecated.use nativeint
val list_ : 'a hash_fun -> 'a list hash_fun
Deprecated.use list
Hash a list. Each element is hashed using f.
val array_ : 'a hash_fun -> 'a array hash_fun
Deprecated.use array
val opt : 'a hash_fun -> 'a option hash_fun
val pair : 'a hash_fun -> 'b hash_fun -> ('a * 'b) hash_fun
val triple : 'a hash_fun ->
'b hash_fun -> 'c hash_fun -> ('a * 'b * 'c) hash_fun
val if_ : bool -> 'a hash_fun -> 'a hash_fun -> 'a hash_fun
Decide which hash function to use depending on the boolean

Iterators


type 'a sequence = ('a -> unit) -> unit 
type 'a gen = unit -> 'a option 
type 'a klist = unit -> [ `Cons of 'a * 'a klist | `Nil ] 
val seq : 'a hash_fun -> 'a sequence hash_fun
val gen : 'a hash_fun -> 'a gen hash_fun
val klist : 'a hash_fun -> 'a klist hash_fun

Generic Hashing

Parametrize over the state, and some primitives to hash basic types. This can for instance be used for cryptographic hashing or checksums such as MD5.

module type HASH = sig .. end
module type S = sig .. end
module Make (H : HASH) : S  with type state = H.state
include CCHash.S