Module type Datatype_sig.S
Generic operations that must be provided by every data type.
Any notion of equality is allowed, as long as it is an equivalence relation, and that if a == b, then equal a b.
val hash : t -> inthash requires that equal values have the same hash.
val pretty : Stdlib.Format.formatter -> t -> unit