module type HashedType =`sig`

..`end`

`type `

t

The type of the hashtable keys.

`val equal : ``t ->`

t -> bool

The equality predicate used to compare keys.

`val hash : ``t -> int`

A hashing function on keys. It must be such that if two keys are
equal according to

`equal`

, then they have identical hash values
as computed by `hash`

.
Examples: suitable (`equal`

, `hash`

) pairs for arbitrary key
types include
(`(=)`

, `Hashtbl.hash`

) for comparing objects by structure,
(`(fun x y -> compare x y = 0)`

, `Hashtbl.hash`

)
for comparing objects by structure and handling `Standard.nan`

correctly, and
(`(==)`

, `Hashtbl.hash`

) for comparing objects by addresses
(e.g. for cyclic keys).