Dolmen_std.ExprSourcetype builtin =
< ty : ty
; ty_var : ty_var
; ty_cst : ty_cst
; term : term
; term_var : term_var
; term_cst : term_cst >
Builtin.tExtensible variant type for builtin operations.
The type of identifiers. 'ty is the type for representing the type of the id.
Type descriptions.
Types, which wrap type description with a memoized hash and some tags.
Term symbols, which encode their expected type and term argument lists lengths.
Term descriptions.
Binders.
Term, which wrap term descriptions.
Alias for signature compatibility (with Dolmen_loop.Pipes.Make for instance).
One case of the type definition for an algebraic datatype.
type ty_def = | AbstractAbstract types
*)| Adt of {ty : ty_cst;record : bool;cases : ty_def_adt_case array;}Algebraic datatypes, including records (which are seen as a 1-case adt).
*)Type definitions.
Memoize the given function using a hashtable as cache. Useful to wrap functions such as Ty.Var.mk when some symbol is indexed over **simple** arguments (for instance in the case of bitvectors). By default, the size is the 16, which is the minmum size of a hashtbl.
WARNING: One must be careful about order of execution when using this function. In particular, eta-expansion can break the cache behaviour. For instance the following is a correct use of this function: (** correct version *) let add_one = with_cache ((+) 1) However, the following is incorrect and will instead create a new cache for each call to the function (** bad version *) let bad_add_one x = with_cache ((+) 1) x