`module type HashedType = sig .. end`

The input signature of the functor

`Hashtbl.Make`

.```
type t;
```

The type of the hashtable keys.

```
let equal: (t, t) => bool;
```

The equality predicate used to compare keys.

```
let 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 (provided objects do not contain floats) - (
`(fun x y -> compare x y = 0)`

,`Hashtbl.hash`

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

correctly - (
`(==)`

,`Hashtbl.hash`

) for comparing objects by physical equality (e.g. for mutable or cyclic objects).