.. | ||
law_source | ||
api_web.ml | ||
api.ml | ||
api.mli | ||
bench.ml | ||
dune | ||
README.md |
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