catala/french_law/ocaml
Louis Gesbert c564e70636 Correctly setup ocolor on all output channels
(and some cleanup of the remaining deps to ANSITerminal)
2023-06-08 12:14:11 +02:00
..
law_source Correctly setup ocolor on all output channels 2023-06-08 12:14:11 +02:00
api_web.ml Fix french law examples for API changes 2022-10-25 14:50:49 +02:00
api.ml Fix french law examples for API changes 2022-10-25 14:50:49 +02:00
api.mli refactor(french_law/ocaml): refactor the api_web.ml 2022-07-22 17:01:33 +02:00
bench.ml Delete variable EVERYWHERE 2023-04-27 12:13:50 +02:00
dune update nix files 2023-03-03 14:51:51 +01:00
README.md Fixes #307 2022-08-09 14:39:43 +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 runtimes/ocaml/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