`sig
module rec Typerep :
sig
type _ t =
Int : int Std_internal.Typerep.t
| Int32 : int32 Std_internal.Typerep.t
| Int64 : int64 Std_internal.Typerep.t
| Nativeint : nativeint Std_internal.Typerep.t
| Char : char Std_internal.Typerep.t
| Float : float Std_internal.Typerep.t
| String : string Std_internal.Typerep.t
| Bool : bool Std_internal.Typerep.t
| Unit : unit Std_internal.Typerep.t
| Option :
'a Std_internal.Typerep.t -> 'a option Std_internal.Typerep.t
| List : 'a Std_internal.Typerep.t -> 'a list Std_internal.Typerep.t
| Array :
'a Std_internal.Typerep.t -> 'a array Std_internal.Typerep.t
| Lazy :
'a Std_internal.Typerep.t -> 'a Lazy.t Std_internal.Typerep.t
| Ref :
'a Std_internal.Typerep.t -> 'a Pervasives.ref
Std_internal.Typerep.t
| Function :
('dom Std_internal.Typerep.t * 'rng Std_internal.Typerep.t) ->
('dom -> 'rng) Std_internal.Typerep.t
| Tuple :
'a Std_internal.Typerep.Tuple.t -> 'a Std_internal.Typerep.t
| Record :
'a Std_internal.Typerep.Record.t -> 'a Std_internal.Typerep.t
| Variant :
'a Std_internal.Typerep.Variant.t -> 'a Std_internal.Typerep.t
| Named :
('a Std_internal.Typerep.Named.t *
'a Std_internal.Typerep.t Lazy.t option) -> 'a
Std_internal.Typerep.t
type packed =
T : 'a Std_internal.Typerep.t -> Std_internal.Typerep.packed
module Named :
sig
module type T0 =
sig
type named
type t
val typename_of_named :
Std_internal.Typerep.Named.T0.named Typename.t
val typename_of_t : Std_internal.Typerep.Named.T0.t Typename.t
val witness :
(Std_internal.Typerep.Named.T0.t,
Std_internal.Typerep.Named.T0.named)
Type_equal.t
end
module type T1 =
sig
type 'a named
type a
val a : Std_internal.Typerep.Named.T1.a Std_internal.Typerep.t
type t
val typename_of_named :
'a Typename.t ->
'a Std_internal.Typerep.Named.T1.named Typename.t
val typename_of_t : Std_internal.Typerep.Named.T1.t Typename.t
val witness :
(Std_internal.Typerep.Named.T1.t,
Std_internal.Typerep.Named.T1.a
Std_internal.Typerep.Named.T1.named)
Type_equal.t
end
module type T2 =
sig
type ('a, 'b) named
type a
val a : Std_internal.Typerep.Named.T2.a Std_internal.Typerep.t
type b
val b : Std_internal.Typerep.Named.T2.b Std_internal.Typerep.t
type t
val typename_of_named :
'a Typename.t ->
'b Typename.t ->
('a, 'b) Std_internal.Typerep.Named.T2.named Typename.t
val typename_of_t : Std_internal.Typerep.Named.T2.t Typename.t
val witness :
(Std_internal.Typerep.Named.T2.t,
(Std_internal.Typerep.Named.T2.a,
Std_internal.Typerep.Named.T2.b)
Std_internal.Typerep.Named.T2.named)
Type_equal.t
end
module type T3 =
sig
type ('a, 'b, 'c) named
type a
val a : Std_internal.Typerep.Named.T3.a Std_internal.Typerep.t
type b
val b : Std_internal.Typerep.Named.T3.b Std_internal.Typerep.t
type c
val c : Std_internal.Typerep.Named.T3.c Std_internal.Typerep.t
type t
val typename_of_named :
'a Typename.t ->
'b Typename.t ->
'c Typename.t ->
('a, 'b, 'c) Std_internal.Typerep.Named.T3.named Typename.t
val typename_of_t : Std_internal.Typerep.Named.T3.t Typename.t
val witness :
(Std_internal.Typerep.Named.T3.t,
(Std_internal.Typerep.Named.T3.a,
Std_internal.Typerep.Named.T3.b,
Std_internal.Typerep.Named.T3.c)
Std_internal.Typerep.Named.T3.named)
Type_equal.t
end
module type T4 =
sig
type ('a, 'b, 'c, 'd) named
type a
val a : Std_internal.Typerep.Named.T4.a Std_internal.Typerep.t
type b
val b : Std_internal.Typerep.Named.T4.b Std_internal.Typerep.t
type c
val c : Std_internal.Typerep.Named.T4.c Std_internal.Typerep.t
type d
val d : Std_internal.Typerep.Named.T4.d Std_internal.Typerep.t
type t
val typename_of_named :
'a Typename.t ->
'b Typename.t ->
'c Typename.t ->
'd Typename.t ->
('a, 'b, 'c, 'd) Std_internal.Typerep.Named.T4.named
Typename.t
val typename_of_t : Std_internal.Typerep.Named.T4.t Typename.t
val witness :
(Std_internal.Typerep.Named.T4.t,
(Std_internal.Typerep.Named.T4.a,
Std_internal.Typerep.Named.T4.b,
Std_internal.Typerep.Named.T4.c,
Std_internal.Typerep.Named.T4.d)
Std_internal.Typerep.Named.T4.named)
Type_equal.t
end
module type T5 =
sig
type ('a, 'b, 'c, 'd, 'e) named
type a
val a : Std_internal.Typerep.Named.T5.a Std_internal.Typerep.t
type b
val b : Std_internal.Typerep.Named.T5.b Std_internal.Typerep.t
type c
val c : Std_internal.Typerep.Named.T5.c Std_internal.Typerep.t
type d
val d : Std_internal.Typerep.Named.T5.d Std_internal.Typerep.t
type e
val e : Std_internal.Typerep.Named.T5.e Std_internal.Typerep.t
type t
val typename_of_named :
'a Typename.t ->
'b Typename.t ->
'c Typename.t ->
'd Typename.t ->
'e Typename.t ->
('a, 'b, 'c, 'd, 'e) Std_internal.Typerep.Named.T5.named
Typename.t
val typename_of_t : Std_internal.Typerep.Named.T5.t Typename.t
val witness :
(Std_internal.Typerep.Named.T5.t,
(Std_internal.Typerep.Named.T5.a,
Std_internal.Typerep.Named.T5.b,
Std_internal.Typerep.Named.T5.c,
Std_internal.Typerep.Named.T5.d,
Std_internal.Typerep.Named.T5.e)
Std_internal.Typerep.Named.T5.named)
Type_equal.t
end
type 'a t =
T0 of (module Std_internal.Typerep.Named.T0 with type t = 'a)
| T1 of (module Std_internal.Typerep.Named.T1 with type t = 'a)
| T2 of (module Std_internal.Typerep.Named.T2 with type t = 'a)
| T3 of (module Std_internal.Typerep.Named.T3 with type t = 'a)
| T4 of (module Std_internal.Typerep.Named.T4 with type t = 'a)
| T5 of (module Std_internal.Typerep.Named.T5 with type t = 'a)
val arity : 'a Std_internal.Typerep.Named.t -> int
val typename_of_t :
'a Std_internal.Typerep.Named.t -> 'a Typename.t
val name : 'a Std_internal.Typerep.Named.t -> string
end
module Tuple :
sig
type _ t =
T2 :
('a Std_internal.Typerep.t * 'b Std_internal.Typerep.t) ->
('a * 'b) Std_internal.Typerep.Tuple.t
| T3 :
('a Std_internal.Typerep.t * 'b Std_internal.Typerep.t *
'c Std_internal.Typerep.t) -> ('a * 'b * 'c)
Std_internal.Typerep.Tuple.t
| T4 :
('a Std_internal.Typerep.t * 'b Std_internal.Typerep.t *
'c Std_internal.Typerep.t * 'd Std_internal.Typerep.t) ->
('a * 'b * 'c * 'd) Std_internal.Typerep.Tuple.t
| T5 :
('a Std_internal.Typerep.t * 'b Std_internal.Typerep.t *
'c Std_internal.Typerep.t * 'd Std_internal.Typerep.t *
'e Std_internal.Typerep.t) -> ('a * 'b * 'c * 'd * 'e)
Std_internal.Typerep.Tuple.t
val arity : 'a Std_internal.Typerep.Tuple.t -> int
val typename_of_t :
'a Std_internal.Typerep.Tuple.t -> 'a Typename.t
end
module Tag_internal :
sig
type ('variant, 'args) create =
Args of ('args -> 'variant)
| Const of 'variant
type ('variant, 'args) t = {
label : string;
rep : 'args t;
arity : int;
index : int;
ocaml_repr : int;
tyid : 'args Typename.t;
create : ('variant, 'args) create;
}
end
module Tag :
sig
type ('variant, 'args) create =
Args of ('args -> 'variant)
| Const of 'variant
type ('variant, 'args) t
val label : ('a, 'b) t -> string
val arity : ('a, 'b) t -> int
val index : ('a, 'b) t -> int
val ocaml_repr : ('a, 'b) t -> int
val create : ('variant, 'args) t -> ('variant, 'args) create
val tyid : ('a, 'args) t -> 'args Typename.t
val traverse : ('a, 'args) t -> 'args t
val internal_use_only : ('a, 'b) Tag_internal.t -> ('a, 'b) t
end
module Variant_internal :
sig
type _ tag = Tag : ('variant, 'a) Tag.t -> 'variant tag
type _ value = Value : ('variant, 'a) Tag.t * 'a -> 'variant value
type 'a t = {
typename : 'a Typename.t;
tags : 'a tag array;
polymorphic : bool;
value : 'a -> 'a value;
}
end
module Variant :
sig
type _ tag = Tag : ('variant, 'args) Tag.t -> 'variant tag
type _ value =
Value : ('variant, 'args) Tag.t * 'args -> 'variant value
type 'a t
val typename_of_t : 'a t -> 'a Typename.t
val length : 'a t -> int
val tag : 'a t -> int -> 'a tag
val is_polymorphic : 'a t -> bool
val value : 'a t -> 'a -> 'a value
val fold : 'a t -> init:'acc -> f:('acc -> 'a tag -> 'acc) -> 'acc
val internal_use_only : 'a Variant_internal.t -> 'a t
end
module Field_internal :
sig
type ('record, 'field) t = {
label : string;
rep : 'field t;
index : int;
tyid : 'field Typename.t;
get : 'record -> 'field;
}
end
module Field :
sig
type ('record, 'field) t
val label : ('a, 'b) t -> string
val index : ('a, 'b) t -> int
val get : ('record, 'field) t -> 'record -> 'field
val tyid : ('a, 'field) t -> 'field Typename.t
val traverse : ('a, 'field) t -> 'field t
val internal_use_only : ('a, 'b) Field_internal.t -> ('a, 'b) t
end
module Record_internal :
sig
type _ field = Field : ('record, 'a) Field.t -> 'record field
type 'record fields = {
get : 'field. ('record, 'field) Field.t -> 'field;
}
type 'a t = {
typename : 'a Typename.t;
fields : 'a field array;
has_double_array_tag : bool;
create : 'a fields -> 'a;
}
end
module Record :
sig
type _ field = Field : ('record, 'a) Field.t -> 'record field
type 'record fields = {
get : 'field. ('record, 'field) Field.t -> 'field;
}
type 'a t
val typename_of_t : 'a t -> 'a Typename.t
val length : 'a t -> int
val field : 'a t -> int -> 'a field
val has_double_array_tag : 'a t -> bool
val create : 'a t -> 'a fields -> 'a
val fold :
'a t -> init:'acc -> f:('acc -> 'a field -> 'acc) -> 'acc
val internal_use_only : 'a Record_internal.t -> 'a t
end
val same :
'a Std_internal.Typerep.t -> 'b Std_internal.Typerep.t -> bool
val same_witness :
'a Std_internal.Typerep.t ->
'b Std_internal.Typerep.t -> ('a, 'b) Type_equal.t option
val same_witness_exn :
'a Std_internal.Typerep.t ->
'b Std_internal.Typerep.t -> ('a, 'b) Type_equal.t
val typename_of_t : 'a Std_internal.Typerep.t -> 'a Typename.t
val head : 'a Std_internal.Typerep.t -> 'a Std_internal.Typerep.t
end
val typerep_of_int : int Std_internal.Typerep.t
val typerep_of_int32 : int32 Std_internal.Typerep.t
val typerep_of_int64 : int64 Std_internal.Typerep.t
val typerep_of_nativeint : nativeint Std_internal.Typerep.t
val typerep_of_char : char Std_internal.Typerep.t
val typerep_of_float : float Std_internal.Typerep.t
val typerep_of_string : string Std_internal.Typerep.t
val typerep_of_bool : bool Std_internal.Typerep.t
val typerep_of_unit : unit Std_internal.Typerep.t
type tuple0
val value_tuple0 : Std_internal.tuple0
val typerep_of_option :
'a Std_internal.Typerep.t -> 'a option Std_internal.Typerep.t
val typerep_of_list :
'a Std_internal.Typerep.t -> 'a list Std_internal.Typerep.t
val typerep_of_array :
'a Std_internal.Typerep.t -> 'a array Std_internal.Typerep.t
val typerep_of_lazy_t :
'a Std_internal.Typerep.t -> 'a lazy_t Std_internal.Typerep.t
val typerep_of_ref :
'a Std_internal.Typerep.t -> 'a Pervasives.ref Std_internal.Typerep.t
val typerep_of_function :
'a Std_internal.Typerep.t ->
'b Std_internal.Typerep.t -> ('a -> 'b) Std_internal.Typerep.t
val typerep_of_tuple0 : Std_internal.tuple0 Std_internal.Typerep.t
val typerep_of_tuple2 :
'a Std_internal.Typerep.t ->
'b Std_internal.Typerep.t -> ('a * 'b) Std_internal.Typerep.t
val typerep_of_tuple3 :
'a Std_internal.Typerep.t ->
'b Std_internal.Typerep.t ->
'c Std_internal.Typerep.t -> ('a * 'b * 'c) Std_internal.Typerep.t
val typerep_of_tuple4 :
'a Std_internal.Typerep.t ->
'b Std_internal.Typerep.t ->
'c Std_internal.Typerep.t ->
'd Std_internal.Typerep.t -> ('a * 'b * 'c * 'd) Std_internal.Typerep.t
val typerep_of_tuple5 :
'a Std_internal.Typerep.t ->
'b Std_internal.Typerep.t ->
'c Std_internal.Typerep.t ->
'd Std_internal.Typerep.t ->
'e Std_internal.Typerep.t ->
('a * 'b * 'c * 'd * 'e) Std_internal.Typerep.t
val typename_of_int : int Typename.t
val typename_of_int32 : int32 Typename.t
val typename_of_int64 : int64 Typename.t
val typename_of_nativeint : nativeint Typename.t
val typename_of_char : char Typename.t
val typename_of_float : float Typename.t
val typename_of_string : string Typename.t
val typename_of_bool : bool Typename.t
val typename_of_unit : unit Typename.t
val typename_of_option : 'a Typename.t -> 'a option Typename.t
val typename_of_list : 'a Typename.t -> 'a list Typename.t
val typename_of_array : 'a Typename.t -> 'a array Typename.t
val typename_of_lazy_t : 'a Typename.t -> 'a lazy_t Typename.t
val typename_of_ref : 'a Typename.t -> 'a Pervasives.ref Typename.t
val typename_of_function :
'a Typename.t -> 'b Typename.t -> ('a -> 'b) Typename.t
val typename_of_tuple0 : Std_internal.tuple0 Typename.t
val typename_of_tuple2 :
'a Typename.t -> 'b Typename.t -> ('a * 'b) Typename.t
val typename_of_tuple3 :
'a Typename.t ->
'b Typename.t -> 'c Typename.t -> ('a * 'b * 'c) Typename.t
val typename_of_tuple4 :
'a Typename.t ->
'b Typename.t ->
'c Typename.t -> 'd Typename.t -> ('a * 'b * 'c * 'd) Typename.t
val typename_of_tuple5 :
'a Typename.t ->
'b Typename.t ->
'c Typename.t ->
'd Typename.t -> 'e Typename.t -> ('a * 'b * 'c * 'd * 'e) Typename.t
end`