CCBijection
Functor to build a bijection Represents 1-to-1 mappings between two types. Each element from the "left" is mapped to one "right" value, and conversely.
module type OrderedType = sig ... end
module type S = sig ... end
module Make
(L : OrderedType)
(R : OrderedType) :
S with type left = L.t and type right = R.t