Module Tuple

module Tuple: Tuple

module T2: sig .. end
module T3: sig .. end
module Make (T1 : sig
type t 
end) (T2 : sig
type t 
end) : sig .. end
module type Comparable_sexpable = sig .. end
module Comparable (S1 : Comparable_sexpable)  (S2 : Comparable_sexpable) : Comparable_sexpable  with type t := Make (S1) (S2).t
module type Hashable_sexpable = sig .. end
module Hashable (S1 : Hashable_sexpable)  (S2 : Hashable_sexpable) : Hashable_sexpable  with type t := Make (S1) (S2).t
The difference between Hashable and Hashable_t functors is that the former's result type doesn't contain type t and the latter does.
module Hashable_t (S1 : Hashable_sexpable)  (S2 : Hashable_sexpable) : Hashable_sexpable  with type t = Make (S1) (S2).t
module Sexpable (S1 : Sexpable.S)  (S2 : Sexpable.S) : Sexpable.S  with type t := Make (S1) (S2).t