sig
type ('a, 'b) t = 'a * 'b
val make : 'a -> 'b -> 'a * 'b
val fst : 'a * 'b -> 'a
val snd : 'a * 'b -> 'b
val swap : 'a * 'b -> 'b * 'a
val fold : ('a -> 'b -> 'c) -> 'a * 'b -> 'c
val map : ('a -> 'c) -> ('b -> 'd) -> 'a * 'b -> 'c * 'd
val iter : ('a -> unit) -> ('b -> unit) -> 'a * 'b -> unit
val map_fst : ('a -> 'c) -> 'a * 'b -> 'c * 'b
val map_snd : ('b -> 'c) -> 'a * 'b -> 'a * 'c
val equal :
('a -> 'a -> bool) -> ('b -> 'b -> bool) -> 'a * 'b -> 'a * 'b -> bool
val compare :
('a -> 'a -> int) -> ('b -> 'b -> int) -> 'a * 'b -> 'a * 'b -> int
end