catala/french_law/ocaml
2022-02-24 16:46:02 +01:00
..
law_source Correct flag for enabling optimization 2022-02-24 16:46:02 +01:00
api_web.ml Update assets 2022-02-09 16:09:28 +01:00
api.ml Update assets 2022-02-09 16:09:28 +01:00
api.mli Update all APIs in various languages 2021-11-07 00:53:14 +01:00
bench.ml Reduce iteration number 2022-02-03 14:40:44 +01:00
dune Big renaming and dir reorg 2021-06-21 11:39:06 +02:00
README.md Added more doc 2021-06-25 10:50:49 +02:00

OCaml French Law Library

This folder contains a ready-to-use OCaml library featuring French public algorithms coded up in Catala.

Organization

Law source

The law_source folder contains the files generated by the Catala compiler. These files are generated using the following rule from the top-level Makefile of this repository:

make generate_french_law_library_ocaml

They can be compiled using

make build_french_law_library_ocaml

In particular, law_source/unit_tests/run_tests.ml provides an executable that runs the unit tests coming from the source Catala examples, and that can be launched with

make run_french_law_library_ocaml_tests

The law_source files rely on the Catala OCaml runtime, located in compiler/runtime.{ml, mli}. This runtime defines the types of the values manipulated by the Catala programs in OCaml and the operations available for them.

Wrappers

Then, the api.{ml, mli} module provides a wrapper around the functions exported in law_source. These wrappers mostly convert back and forth between idiomatic OCaml types and the types expected by the Catala programs in OCaml.

api.web.ml is used for the JS library (see the dedicated README).

Finally, bench.ml provides a simple benchmarking executable that runs the computations of each algorithm a bunch of times with random inputs. You can run it from the root of this repository with

make run_french_law_library_benchmark_ocaml