catala/french_law
Louis Gesbert fea01cfe4c Add overloaded operators for the common operations
This uses the same disambiguation mechanism put in place for
structures, calling the typer on individual rules on the desugared AST
to propagate types, in order to resolve ambiguous operators like `+`
to their strongly typed counterparts (`+!`, `+.`, `+$`, `+@`, `+$`) in
the translation to scopelang.

The patch includes some normalisation of the definition of all the
operators, and classifies them based on their typing policy instead of
their arity. It also adds a little more flexibility:
- a couple new operators, like `-` on date and duration
- optional type annotation on some aggregation constructions

The `Shared_ast` lib is also lightly restructured, with the `Expr`
module split into `Type`, `Operator` and `Expr`.
2022-12-13 11:55:24 +01:00
..
catala_legifrance Tweak error message location printing 2022-11-28 16:38:09 +01:00
js Add overloaded operators for the common operations 2022-12-13 11:55:24 +01:00
ocaml Add overloaded operators for the common operations 2022-12-13 11:55:24 +01:00
python Correct lines 2022-11-24 15:17:00 +01:00
README.md feat(runtime): clean parse_raw_events + add documentation 2022-06-16 11:39:37 +02:00

French Law Libraries

This folder presents a working example of how Catala could be distributed and deployed inside existing applications. Each sub-folder is specialized for a particular programming language, and features a ready-to-use library of all the French public algorithms coded up using Catala so far.

General principles

Let us say you want to deploy a Catala program inside an application written in programming language X. The Catala compiler will translate the source Catala program into X, yielding a new .x source code file. This .x file will export functions corresponding to the scopes of the original Catala program. You can then reuse those exported functions in your application written in X.

OCaml

To see how to deploy Catala programs as an OCaml library, see the dedicated readme.

JS

To see how to deploy Catala programs as a JS library, see the dedicated readme.

Python

To see how to deploy Catala programs as a Python library, see the dedicated readme.