# Module Std_kernel.Tuple2

    module Tuple2: Tuple.T2

    type ('a, 'b) t = 'a * 'b

    val typerep_of_t : 'a Typerep_lib.Std.Typerep.t ->
           'b Typerep_lib.Std.Typerep.t -> ('a, 'b) t Typerep_lib.Std.Typerep.t

    val typename_of_t : 'a Typerep_lib.Std.Typename.t ->
           'b Typerep_lib.Std.Typename.t ->
           ('a, 'b) t Typerep_lib.Std.Typename.t

    val create : 'a -> 'b -> ('a, 'b) t

    val curry : (('a, 'b) t -> 'c) -> 'a -> 'b -> 'c

    val uncurry : ('a -> 'b -> 'c) -> ('a, 'b) t -> 'c

    val compare : cmp1:('a -> 'a -> int) ->
           cmp2:('b -> 'b -> int) -> ('a, 'b) t -> ('a, 'b) t -> int

    val equal : eq1:('a -> 'a -> bool) ->
           eq2:('b -> 'b -> bool) -> ('a, 'b) t -> ('a, 'b) t -> bool

    val get1 : ('a, 'b) t -> 'a

    val get2 : ('b, 'a) t -> 'a

    val map1 : f:('a -> 'c) -> ('a, 'b) t -> ('c, 'b) t

    val map2 : f:('b -> 'c) -> ('a, 'b) t -> ('a, 'c) t

    val swap : ('a, 'b) t -> ('b, 'a) t

    val t_of_sexp : (Sexplib.Sexp.t -> 'a) ->
           (Sexplib.Sexp.t -> 'b) -> Sexplib.Sexp.t -> ('a, 'b) t

    val sexp_of_t : ('a -> Sexplib.Sexp.t) ->
           ('b -> Sexplib.Sexp.t) -> ('a, 'b) t -> Sexplib.Sexp.t