sig
type ('a, 'b) t = 'a * 'b
val make : 'a -> 'b -> ('a, 'b) CCPair.t
val map1 : ('a -> 'b) -> 'a * 'c -> 'b * 'c
val map2 : ('a -> 'b) -> 'c * 'a -> 'c * 'b
val map : ('a -> 'c) -> ('b -> 'd) -> 'a * 'b -> 'c * 'd
val map_same : ('a -> 'b) -> 'a * 'a -> 'b * 'b
val map_fst : ('a -> 'b) -> 'a * 'c -> 'b
val map_snd : ('a -> 'b) -> 'c * 'a -> 'b
val iter : ('a -> 'b -> unit) -> 'a * 'b -> unit
val swap : 'a * 'b -> 'b * 'a
val ( <<< ) : ('a -> 'b) -> 'a * 'c -> 'b * 'c
val ( >>> ) : ('a -> 'b) -> 'c * 'a -> 'c * 'b
val ( *** ) : ('a -> 'c) -> ('b -> 'd) -> 'a * 'b -> 'c * 'd
val ( &&& ) : ('a -> 'b) -> ('a -> 'c) -> 'a -> 'b * 'c
val merge : ('a -> 'b -> 'c) -> 'a * 'b -> 'c
val fold : ('a -> 'b -> 'c) -> 'a * 'b -> 'c
val dup : 'a -> 'a * 'a
val dup_map : ('a -> 'b) -> 'a -> 'a * 'b
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
type 'a printer = Format.formatter -> 'a -> unit
val pp :
?sep:string ->
'a CCPair.printer -> 'b CCPair.printer -> ('a * 'b) CCPair.printer
end