Module Identifiable

module Identifiable: sig .. end
Uniform interface for common data structures over various things.

module type Thing = sig .. end
module Pair: 
functor (A : Thing-> 
functor (B : Thing-> Thing with type t = A.t * B.t
module type S = sig .. end
module Make: 
functor (T : Thing-> S with type t := T.t