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