Module Base.Identifiable

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 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 : functor (M : sig ... end) -> S with type t := M.t

Used for making an Identifiable module. Here's an example.

module Make_using_comparator : functor (M : sig ... end) -> S with type t := M.t with type comparator_witness := M.comparator_witness