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