package dolmen
A module for Algebraic datatype constructors.
type t = term_cst
An algebraic type constructor. Note that such constructors are used to build terms, and not types, e.g. consider the following: type 'a list = Nil | Cons of 'a * 'a t
, then Nil
and Cons
are the constructors, while list
would be a type constant of arity 1 used to name the type.
val print : Stdlib.Format.formatter -> t -> unit
Printer.
val hash : t -> int
A hash function for adt constructors, should be suitable to create hashtables.
An equality function on adt constructors. Should be compatible with the hash function.
val arity : t -> int * int
Returns the arity of a constructor.
val void : t
Only constructor for the type unit.
Used in the type-checking of pattern matching. pattern_arity cstr ret ty_args
should return the types of the expected arguments args
such that apply_cstr cstr ty_args args
has type ret
.
Get the list of values bound to a list tag, returning the empty list if no value is bound.
Optionally bind an additional value to a list tag.
Bind a list of additional values to a list tag.