catala/french_law/ocaml
2023-09-09 22:02:39 +02:00
..
law_source replace let _ by let () or add type annotation 2023-09-09 22:02:39 +02:00
api_web.ml replace let _ by let () or add type annotation 2023-09-09 22:02:39 +02:00
api.ml Update tests 2023-08-31 18:31:48 +02:00
api.mli refactor(french_law/ocaml): refactor the api_web.ml 2022-07-22 17:01:33 +02:00
bench.ml replace let _ by let () or add type annotation 2023-09-09 22:02:39 +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