functor (Ordered : Set.OrderedType->
  sig type t = Ordered.t * Ordered.t val compare : t -> t -> int end