package catala

  1. Overview
  2. Docs
Compiler and library for the literate programming language for tax code specification

Install

Dune Dependency

Authors

Maintainers

Sources

0.7.0.tar.gz
md5=6dbbc2f50c23693f26ab6f048e78172f
sha512=a5701e14932d8a866e2aa3731f76df85ff2a68b4fa943fd510c535913573274d66eaec1ae6fcae17f20b475876048a9ab196ef6d8c23d4ea6b90b986aa0a6daa

doc/catala.lcalc/Lcalc/Ast/index.html

Module Lcalc.AstSource

Abstract syntax tree for the lambda calculus

Abstract syntax tree

The expressions use the Bindlib library, based on higher-order abstract syntax

Sourcetype lit =
  1. | LBool of bool
  2. | LInt of Runtime.integer
  3. | LRat of Runtime.decimal
  4. | LMoney of Runtime.money
  5. | LUnit
  6. | LDate of Runtime.date
  7. | LDuration of Runtime.duration
Sourcetype except =
  1. | ConflictError
  2. | EmptyError
  3. | NoValueProvided
  4. | Crash
Sourcetype 'm mark = 'm Dcalc.Ast.mark
Sourcetype 'm marked_expr = ('m expr, 'm) Dcalc.Ast.marked
Sourceand 'm expr =
  1. | EVar of 'm expr Bindlib.var
  2. | ETuple of 'm marked_expr list * Dcalc.Ast.StructName.t option
    (*

    The MarkedString.info is the former struct field name

    *)
  3. | ETupleAccess of 'm marked_expr * int * Dcalc.Ast.StructName.t option * Dcalc.Ast.typ Utils.Marked.pos list
    (*

    The MarkedString.info is the former struct field name

    *)
  4. | EInj of 'm marked_expr * int * Dcalc.Ast.EnumName.t * Dcalc.Ast.typ Utils.Marked.pos list
    (*

    The MarkedString.info is the former enum case name

    *)
  5. | EMatch of 'm marked_expr * 'm marked_expr list * Dcalc.Ast.EnumName.t
    (*

    The MarkedString.info is the former enum case name

    *)
  6. | EArray of 'm marked_expr list
  7. | ELit of lit
  8. | EAbs of ('m expr, 'm marked_expr) Bindlib.mbinder * Dcalc.Ast.typ Utils.Marked.pos list
  9. | EApp of 'm marked_expr * 'm marked_expr list
  10. | EAssert of 'm marked_expr
  11. | EOp of Dcalc.Ast.operator
  12. | EIfThenElse of 'm marked_expr * 'm marked_expr * 'm marked_expr
  13. | ERaise of except
  14. | ECatch of 'm marked_expr * except * 'm marked_expr
Sourcetype 'm program = ('m expr, 'm) Dcalc.Ast.program_generic

Variable helpers

Sourcetype 'm var = 'm expr Bindlib.var
Sourcetype 'm vars = 'm expr Bindlib.mvar
Sourcemodule Var : sig ... end
Sourcemodule VarMap : Map.S with type key = Var.t
Sourcemodule VarSet : Set.S with type elt = Var.t
Sourceval new_var : string -> 'm var
Sourcetype 'm binder = ('m expr, 'm marked_expr) Bindlib.binder

Program traversal

Sourceval map_expr : 'a -> f:('a -> 'm1 marked_expr -> 'm2 marked_expr Bindlib.box) -> ('m1 expr, 'm2 mark) Utils.Marked.t -> 'm2 marked_expr Bindlib.box

See Dcalc.Ast.map_expr

Sourceval map_expr_top_down : f:('m1 marked_expr -> ('m1 expr, 'm2 mark) Utils.Marked.t) -> 'm1 marked_expr -> 'm2 marked_expr Bindlib.box

See Dcalc.Ast.map_expr_top_down

Sourceval map_expr_marks : f:('m1 mark -> 'm2 mark) -> 'm1 marked_expr -> 'm2 marked_expr Bindlib.box

See Dcalc.Ast.map_expr_marks

Sourceval untype_program : 'm program -> Dcalc.Ast.untyped program

Boxed constructors

Sourceval earray : 'm marked_expr Bindlib.box list -> 'm mark -> 'm marked_expr Bindlib.box
Sourceval elit : lit -> 'm mark -> 'm marked_expr Bindlib.box
Sourceval eraise : except -> 'm mark -> 'm marked_expr Bindlib.box

Language terms construction

Sourceval make_var : ('m var, 'm) Dcalc.Ast.marked -> 'm marked_expr Bindlib.box
Sourceval option_enum : Dcalc.Ast.EnumName.t
Sourceval make_none : 'm mark -> 'm marked_expr Bindlib.box

e' = make_matchopt'' pos v e e_none e_some Builds the term corresponding to match e with | None -> fun () -> e_none |Some -> fun v -> e_some.

Sourceval box_expr : 'm marked_expr -> 'm marked_expr Bindlib.box

Special symbols

Sourceval handle_default : Var.t
Sourceval handle_default_opt : Var.t
OCaml

Innovation. Community. Security.