Scalc.AstSourcemodule D = Dcalc.Astmodule FuncName : sig ... endmodule VarName : sig ... endand naked_expr = | EVar : VarName.t -> naked_expr| EFunc : FuncName.t -> naked_expr| EStruct : expr list * Shared_ast.StructName.t -> naked_expr| EStructFieldAccess : expr
* Shared_ast.StructField.t
* Shared_ast.StructName.t -> naked_expr| EInj : expr
* Shared_ast.EnumConstructor.t
* Shared_ast.EnumName.t -> naked_expr| EArray : expr list -> naked_expr| ELit : L.lit -> naked_expr| EApp : expr * expr list -> naked_expr| EOp : (Shared_ast.lcalc, _) Shared_ast.operator -> naked_exprtype stmt = | SInnerFuncDef of VarName.t Catala_utils.Marked.pos * func| SLocalDecl of VarName.t Catala_utils.Marked.pos * Shared_ast.typ| SLocalDef of VarName.t Catala_utils.Marked.pos * expr| STryExcept of block * Shared_ast.except * block| SRaise of Shared_ast.except| SIfThenElse of expr * block * block| SSwitch of expr * Shared_ast.EnumName.t * (block * VarName.t) listEach block corresponds to one case of the enum
*)| SReturn of naked_expr| SAssert of naked_exprand func = {func_params : (VarName.t Catala_utils.Marked.pos * Shared_ast.typ) list;func_body : block;}type scope_body = {scope_body_name : Shared_ast.ScopeName.t;scope_body_var : FuncName.t;scope_body_func : func;}