Module Typerep.Variant
type _ tag
=
|
Tag : ('variant, 'args) Tag.t -> 'variant tag
An existential type used to gather all the tags constituing a variant type. the
'variant
parameter is the variant type, it is the same for all the constructors of that variant type. The type of the parameters might be different for each constructor and is thus existential
type _ value
=
|
Value : ('variant, 'args) Tag.t * 'args -> 'variant value
A similar existential constructor to
_ tag
but this one holds a value whose type is the arguments of the tag constructor. A value of type'a value
is a pair of (1) a value of variant type'a
along with (2) some information about the constructor within the type'a
val typename_of_t : 'a t -> 'a Typerep_lib.Typename.t
val length : 'a t -> int
Returns the number of tags of this variant type definition.
val is_polymorphic : 'a t -> bool
Distinguish polymorphic variants and standard variants. Typically, polymorphic variants tags starts with the
`
character. Example polymorphic variant: type t =`A | `B
standard variant: type t = A | B
val fold : 'a t -> init:'acc -> f:('acc -> 'a tag -> 'acc) -> 'acc
folding along the tags of the variant type
val internal_use_only : 'a Variant_internal.t -> 'a t