module type HashedType =`sig`

..`end`

`type `

t

The type of the elements.

`val equal : ``t -> t -> bool`

The equality predicate used to compare elements.

`val to_string : ``t -> string`

`val hash : ``t -> int`

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

`equal`

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

.
Examples: suitable (`equal`

, `hash`

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

, `Hashset.hash`

) for comparing objects by structure, and
(`(==)`

, `Hashset.hash`

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