sig
type 'a t
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 int : int Type_generic.Computation.t
val int32 : int32 Type_generic.Computation.t
val int64 : int64 Type_generic.Computation.t
val nativeint : nativeint Type_generic.Computation.t
val char : char Type_generic.Computation.t
val float : float Type_generic.Computation.t
val string : string Type_generic.Computation.t
val bool : bool Type_generic.Computation.t
val unit : unit Type_generic.Computation.t
val option :
'a Type_generic.Computation.t -> 'a option Type_generic.Computation.t
val list :
'a Type_generic.Computation.t -> 'a list Type_generic.Computation.t
val array :
'a Type_generic.Computation.t -> 'a array Type_generic.Computation.t
val lazy_t :
'a Type_generic.Computation.t -> 'a lazy_t Type_generic.Computation.t
val ref_ :
'a Type_generic.Computation.t ->
'a Pervasives.ref Type_generic.Computation.t
val function_ :
'a Type_generic.Computation.t ->
'b Type_generic.Computation.t -> ('a -> 'b) Type_generic.Computation.t
val tuple2 :
'a Type_generic.Computation.t ->
'b Type_generic.Computation.t -> ('a * 'b) Type_generic.Computation.t
val tuple3 :
'a Type_generic.Computation.t ->
'b Type_generic.Computation.t ->
'c Type_generic.Computation.t ->
('a * 'b * 'c) Type_generic.Computation.t
val tuple4 :
'a Type_generic.Computation.t ->
'b Type_generic.Computation.t ->
'c Type_generic.Computation.t ->
'd Type_generic.Computation.t ->
('a * 'b * 'c * 'd) Type_generic.Computation.t
val tuple5 :
'a Type_generic.Computation.t ->
'b Type_generic.Computation.t ->
'c Type_generic.Computation.t ->
'd Type_generic.Computation.t ->
'e Type_generic.Computation.t ->
('a * 'b * 'c * 'd * 'e) Type_generic.Computation.t
val record : 'a Record.t -> 'a Type_generic.Computation.t
val variant : 'a Variant.t -> 'a Type_generic.Computation.t
module Named :
sig
module Context : sig type t val create : unit -> t end
type 'a t
val init : Context.t -> 'a Typename.t -> 'a t
val get_wip_computation : 'a t -> 'a t
val set_final_computation : 'a t -> 'a t -> 'a t
val share : 'a Std_internal.Typerep.t -> bool
end
end