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