A signature combining functionality that is commonly used for types that are intended to act as names or identifiers.
Modules that satisfy Identifiable
can be printed and parsed (both through string and
s-expression converters), can be used in hash-based and comparison-based
containers (e.g., hashtables and maps)
Also, this module provides functors for conveniently constructing identifiable modules.
module type S : sig ... end
module Make_using_comparator : functor (M : sig ... end) -> S with type t := M.t with type comparator_witness := M.comparator_witness