functor (A : Thing) (B : Thing) -> sig type t = A.t * B.t val equal : t -> t -> bool val hash : t -> int val compare : t -> t -> int val output : out_channel -> t -> unit val print : Format.formatter -> t -> unit end