Dcalc.AstSourceAbstract syntax tree for the default calculus
type typ = | TLit of typ_lit| TTuple of typ Utils.Pos.marked list * StructName.t option| TEnum of typ Utils.Pos.marked list * EnumName.t| TArrow of typ Utils.Pos.marked * typ Utils.Pos.marked| TArray of typ Utils.Pos.marked| TAnytype lit = | LBool of bool| LEmptyError| LInt of Runtime.integer| LRat of Runtime.decimal| LMoney of Runtime.money| LUnit| LDate of date| LDuration of durationtype unop = | Not| Minus of op_kind| Log of log_entry * Utils.Uid.MarkedString.info list| Length| IntToRat| GetDay| GetMonth| GetYeartype expr = | EVar of expr Bindlib.var Utils.Pos.marked| ETuple of expr Utils.Pos.marked list * StructName.t optionThe MarkedString.info is the former struct field name
| ETupleAccess of expr Utils.Pos.marked
* int
* StructName.t option
* typ Utils.Pos.marked listThe MarkedString.info is the former struct field name
| EInj of expr Utils.Pos.marked * int * EnumName.t * typ Utils.Pos.marked listThe MarkedString.info is the former enum case name
| EMatch of expr Utils.Pos.marked * expr Utils.Pos.marked list * EnumName.tThe MarkedString.info is the former enum case name
| EArray of expr Utils.Pos.marked list| ELit of lit| EAbs of (expr, expr Utils.Pos.marked) Bindlib.mbinder Utils.Pos.marked
* typ Utils.Pos.marked list| EApp of expr Utils.Pos.marked * expr Utils.Pos.marked list| EAssert of expr Utils.Pos.marked| EOp of operator| EDefault of expr Utils.Pos.marked list
* expr Utils.Pos.marked
* expr Utils.Pos.marked| EIfThenElse of expr Utils.Pos.marked
* expr Utils.Pos.marked
* expr Utils.Pos.marked| ErrorOnEmpty of expr Utils.Pos.markedThe expressions use the Bindlib library, based on higher-order abstract syntax
val make_abs :
vars ->
expr Utils.Pos.marked Bindlib.box ->
Utils.Pos.t ->
typ Utils.Pos.marked list ->
Utils.Pos.t ->
expr Utils.Pos.marked Bindlib.boxval make_app :
expr Utils.Pos.marked Bindlib.box ->
expr Utils.Pos.marked Bindlib.box list ->
Utils.Pos.t ->
expr Utils.Pos.marked Bindlib.boxval make_let_in :
Var.t ->
typ Utils.Pos.marked ->
expr Utils.Pos.marked Bindlib.box ->
expr Utils.Pos.marked Bindlib.box ->
Utils.Pos.t ->
expr Utils.Pos.marked Bindlib.boxval make_multiple_let_in :
Var.t array ->
typ Utils.Pos.marked list ->
expr Utils.Pos.marked Bindlib.box list ->
expr Utils.Pos.marked Bindlib.box ->
Utils.Pos.t ->
expr Utils.Pos.marked Bindlib.boxtype program = {decl_ctx : decl_ctx;scopes : (ScopeName.t * Var.t * expr Utils.Pos.marked) list;}