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