functor (X : Sig.COMPARABLE) (Y : Sig.COMPARABLE->
  sig
    type t = X.t * Y.t
    val compare : t -> t -> int
    val hash : t -> int
    val equal : t -> t -> bool
  end