`sig
type 'a t
type 'a typename = 'a Typename.t
val create : ?name:string -> unit -> 'a Typename.t
val static : unit Typename.t
val same : 'a Typename.t -> 'b Typename.t -> bool
val same_witness :
'a Typename.t -> 'b Typename.t -> ('a, 'b) Type_equal.t option
val same_witness_exn :
'a Typename.t -> 'b Typename.t -> ('a, 'b) Type_equal.t
module Key :
sig
type t
val compare : Typename.Key.t -> Typename.Key.t -> int
val equal : Typename.Key.t -> Typename.Key.t -> bool
val hash : Typename.Key.t -> int
end
val key : 'a Typename.t -> Typename.Key.t
module Uid :
sig
type t
val compare : Typename.Uid.t -> Typename.Uid.t -> int
val equal : Typename.Uid.t -> Typename.Uid.t -> bool
val hash : Typename.Uid.t -> int
val name : Typename.Uid.t -> string
end
val uid : 'a Typename.t -> Typename.Uid.t
val name : 'a Typename.t -> string
module type S0 =
sig type t val typename_of_t : Typename.S0.t Typename.typename end
module type S1 =
sig
type 'a t
val typename_of_t :
'a Typename.typename -> 'a Typename.S1.t Typename.typename
end
module type S2 =
sig
type ('a, 'b) t
val typename_of_t :
'a Typename.typename ->
'b Typename.typename -> ('a, 'b) Typename.S2.t Typename.typename
end
module type S3 =
sig
type ('a, 'b, 'c) t
val typename_of_t :
'a Typename.typename ->
'b Typename.typename ->
'c Typename.typename -> ('a, 'b, 'c) Typename.S3.t Typename.typename
end
module type S4 =
sig
type ('a, 'b, 'c, 'd) t
val typename_of_t :
'a Typename.typename ->
'b Typename.typename ->
'c Typename.typename ->
'd Typename.typename ->
('a, 'b, 'c, 'd) Typename.S4.t Typename.typename
end
module type S5 =
sig
type ('a, 'b, 'c, 'd, 'e) t
val typename_of_t :
'a Typename.typename ->
'b Typename.typename ->
'c Typename.typename ->
'd Typename.typename ->
'e Typename.typename ->
('a, 'b, 'c, 'd, 'e) Typename.S5.t Typename.typename
end
module Make0 :
functor (X : Named_intf.S0) -> sig val typename_of_t : X.t typename end
module Make1 :
functor (X : Named_intf.S1) ->
sig val typename_of_t : 'a typename -> 'a X.t typename end
module Make2 :
functor (X : Named_intf.S2) ->
sig
val typename_of_t :
'a typename -> 'b typename -> ('a, 'b) X.t typename
end
module Make3 :
functor (X : Named_intf.S3) ->
sig
val typename_of_t :
'a typename ->
'b typename -> 'c typename -> ('a, 'b, 'c) X.t typename
end
module Make4 :
functor (X : Named_intf.S4) ->
sig
val typename_of_t :
'a typename ->
'b typename ->
'c typename -> 'd typename -> ('a, 'b, 'c, 'd) X.t typename
end
module Make5 :
functor (X : Named_intf.S5) ->
sig
val typename_of_t :
'a typename ->
'b typename ->
'c typename ->
'd typename -> 'e typename -> ('a, 'b, 'c, 'd, 'e) X.t typename
end
module Table :
functor (X : sig type 'a t end) ->
sig
type t
val create : int -> Typename.Table.t
val mem : Typename.Table.t -> 'a Typename.typename -> bool
val set : Typename.Table.t -> 'a Typename.typename -> 'a X.t -> unit
val find : Typename.Table.t -> 'a Typename.typename -> 'a X.t option
end
module Same_witness_exn_1 :
functor (A : S1) (B : S1) ->
sig
type t = { eq : 'a. ('a A.t, 'a B.t) Type_equal.t; }
val witness : Typename.Same_witness_exn_1.t
end
module Same_witness_exn_2 :
functor (A : S2) (B : S2) ->
sig
type t = { eq : 'a 'b. (('a, 'b) A.t, ('a, 'b) B.t) Type_equal.t; }
val witness : Typename.Same_witness_exn_2.t
end
module Same_witness_exn_3 :
functor (A : S3) (B : S3) ->
sig
type t = {
eq : 'a 'b 'c. (('a, 'b, 'c) A.t, ('a, 'b, 'c) B.t) Type_equal.t;
}
val witness : Typename.Same_witness_exn_3.t
end
module Same_witness_exn_4 :
functor (A : S4) (B : S4) ->
sig
type t = {
eq :
'a 'b 'c 'd.
(('a, 'b, 'c, 'd) A.t, ('a, 'b, 'c, 'd) B.t) Type_equal.t;
}
val witness : Typename.Same_witness_exn_4.t
end
module Same_witness_exn_5 :
functor (A : S5) (B : S5) ->
sig
type t = {
eq :
'a 'b 'c 'd 'e.
(('a, 'b, 'c, 'd, 'e) A.t, ('a, 'b, 'c, 'd, 'e) B.t)
Type_equal.t;
}
val witness : Typename.Same_witness_exn_5.t
end
end`