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) and can be used in hash-based and comparison-based containers (e.g., hashtables and maps).
This module also provides functors for conveniently constructing identifiable modules.
module type S = sig ... end
Used for making an Identifiable module. Here's an example.