package catala

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

Install

dune-project
 Dependency

Authors

Maintainers

Sources

1.1.0.tar.gz
md5=ec7dda88c5f7f371d2a35874cdae2a10
sha512=7cedccfbe5330992d5730441d6ba7b97446237ff5bb4579498a167f2319ec03e8fae50b7f80e3abe96833744b61ffd10719ce0c3e4c144893a4b7adc77e91b56

doc/catala.shared_ast/Shared_ast/Interpreter/index.html

Module Shared_ast.InterpreterSource

Reference interpreter for the default calculus

Sourceval evaluate_operator : (((< < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : _ ; custom : _ > as 'a, < < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : _ ; custom : _ > as 'a, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed -> (('a, 'a, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed) -> 'a Shared_ast__.Definitions.Op.t Catala_utils.Mark.pos -> 'm Shared_ast__.Definitions.mark -> Catala_utils.Global.backend_lang -> (('a, 'a, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed list -> (('a, 'a, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed

Evaluates the result of applying the given operator to the given arguments, which are expected to be already reduced to values. The first argument is used to evaluate expressions and called when reducing e.g. the map operator.

Sourceval evaluate_expr : Shared_ast__.Definitions.decl_ctx -> Catala_utils.Global.backend_lang -> ((< < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : _ >, < < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : _ >, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed -> ((< < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : Shared_ast__.Definitions.yes >, < < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : Shared_ast__.Definitions.yes >, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed

Evaluates an expression according to the semantics of the default calculus.

Sourceval interpret_program_dcalc : ?input:Yojson.Safe.t -> ((< monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no ; defaultTerms : Shared_ast__.Definitions.yes ; custom : Shared_ast__.Definitions.no >, < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no ; defaultTerms : Shared_ast__.Definitions.yes ; custom : Shared_ast__.Definitions.no >, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed Shared_ast__.Definitions.program -> Shared_ast__.Definitions.ScopeName.t -> (Catala_utils.Uid.MarkedString.info * ((< < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : Shared_ast__.Definitions.yes ; custom : Shared_ast__.Definitions.yes >, < < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : Shared_ast__.Definitions.yes ; custom : Shared_ast__.Definitions.yes >, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed) list

Interprets a program. This function expects an expression typed as a function whose argument are all thunked. The function is executed by providing for each argument a thunked empty default. Returns a list of all the computed values for the scope variables of the executed scope.

Sourceval interpret_program_dcalc_with_coverage : ?stdlib:Catala_utils.Global.raw_file -> ((< monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no ; defaultTerms : Shared_ast__.Definitions.yes ; custom : Shared_ast__.Definitions.no >, < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no ; defaultTerms : Shared_ast__.Definitions.yes ; custom : Shared_ast__.Definitions.no >, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed Shared_ast__.Definitions.program -> Shared_ast__.Definitions.ScopeName.t -> (Catala_utils.Uid.MarkedString.info * ((< < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : Shared_ast__.Definitions.yes ; custom : Shared_ast__.Definitions.yes >, < < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : Shared_ast__.Definitions.yes ; custom : Shared_ast__.Definitions.yes >, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed) list * Coverage.coverage_map

Same as interpret_program_dcalc but also computes and returns the coverage map of the given program. If stdlib is provided, all positions that refers to it will be discarded.

Sourceval interpret_program_lcalc : ?input:Yojson.Safe.t -> ((< monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no ; defaultTerms : Shared_ast__.Definitions.no ; custom : Shared_ast__.Definitions.no >, < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no ; defaultTerms : Shared_ast__.Definitions.no ; custom : Shared_ast__.Definitions.no >, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed Shared_ast__.Definitions.program -> Shared_ast__.Definitions.ScopeName.t -> (Catala_utils.Uid.MarkedString.info * ((< < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : Shared_ast__.Definitions.no ; custom : Shared_ast__.Definitions.yes >, < < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : Shared_ast__.Definitions.no ; custom : Shared_ast__.Definitions.yes >, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed) list

Interprets a program. This function expects an expression typed as a function whose argument are all thunked. The function is executed by providing for each argument a thunked empty default. Returns a list of all the computed values for the scope variables of the executed scope.

Sourceval addcustom : ((< < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : 'b >, < < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : 'b >, 't) Shared_ast__.Definitions.base_gexpr, 't Shared_ast__.Definitions.mark) Catala_utils.Mark.ed -> ((< < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : Shared_ast__.Definitions.yes >, < < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : Shared_ast__.Definitions.yes >, 't) Shared_ast__.Definitions.base_gexpr, 't Shared_ast__.Definitions.mark) Catala_utils.Mark.ed

Add custom terms to the AST type.

Sourceval delcustom : ((< < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : 'b >, < < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : 'b >, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed -> ((< < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : Shared_ast__.Definitions.no >, < < monomorphic : Shared_ast__.Definitions.yes ; polymorphic : Shared_ast__.Definitions.yes ; overloaded : Shared_ast__.Definitions.no ; resolved : Shared_ast__.Definitions.yes ; syntacticNames : Shared_ast__.Definitions.no ; scopeVarStates : Shared_ast__.Definitions.no ; scopeVarSimpl : Shared_ast__.Definitions.no ; explicitScopes : Shared_ast__.Definitions.no > ; defaultTerms : 'a ; custom : Shared_ast__.Definitions.no >, 'm) Shared_ast__.Definitions.base_gexpr, 'm Shared_ast__.Definitions.mark) Catala_utils.Mark.ed

Runtime check that the term contains no custom terms (raises Invalid_argument if that is the case

Sourceval load_runtime_modules : hashf:(Catala_utils.Hash.t -> Catala_utils.Hash.full) -> _ Shared_ast__.Definitions.program -> unit

Dynlink the runtime modules required by the given program, in order to make them callable by the interpreter. This function is affected by Global.options.bin_dir. Note: in whole-program, we will only try loading external modules.