Hash.Ftype state = Hash.statestate is the internal hash-state used by the hash function.
fold_<T> state v incorporates a value v of type <T> into the hash-state, returning a modified hash-state. Implementations of the fold_<T> functions may mutate the state argument in place, and return a reference to it. Implementations of the fold_<T> functions should not allocate.
type seed = Hash.seedseed is the type used to seed the initial hash-state.
val alloc : unit -> statealloc () returns a fresh uninitialized hash-state. May allocate.
reset ?seed state initializes/resets a hash-state with the given seed, or else a default-seed. Argument state may be mutated. Should not allocate.
type hash_value = Hash.hash_valuehash_value The type of hash values, returned by get_hash_value.
val get_hash_value : state -> hash_valueget_hash_value extracts a hash-value from the hash-state.
module For_tests : sig ... endcreate ?seed () is a convenience. Equivalent to reset ?seed (alloc ()).
val of_fold : (state -> 'a -> state) -> 'a -> hash_valueof_fold fold constructs a standard hash function from an existing fold function.
module Builtin : sig ... endval run : ?seed:seed -> 'a folder -> 'a -> hash_valuerun ?seed folder x runs folder on x in a newly allocated hash-state, initialized using optional seed or a default-seed.
The following identity exists: run [%hash_fold: T] == [%hash: T]
run can be used if we wish to run a hash-folder with a non-default seed.