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