Module type Datatype_sig.S

Generic operations that must be provided by every data type.

type t
val equal : t -> t -> bool

Any notion of equality is allowed, as long as it is an equivalence relation, and that if a == b, then equal a b.

val compare : t -> t -> int

compare is a total order, and should be compatible with equal.

val hash : t -> int

hash requires that equal values have the same hash.

val pretty : Stdlib.Format.formatter -> t -> unit