functor (X : Sig.ORDERED_TYPE->
  functor (Y : Sig.ORDERED_TYPE->
    sig type t = X.t * Y.t val compare : t -> t -> int end