mirror of
https://github.com/CatalaLang/catala.git
synced 2024-09-20 00:41:05 +03:00
51 lines
1.5 KiB
Markdown
51 lines
1.5 KiB
Markdown
# 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](../js/README.md)).
|
|
|
|
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
|
|
```
|