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