Denis Merigoux
a5d4f54115
Push some fixes suggested by @altgr
2023-05-04 18:28:24 +02:00
Denis Merigoux
bcd91f5dea
Merge branch 'master' into aides_logement_outre_mer
2023-05-04 11:04:28 +02:00
Louis Gesbert
b1955bd9d4
Don't use a debug printing function for OCaml output
2023-05-02 16:48:01 +02:00
Louis Gesbert
5e26c5c83d
Yet more printer improvements
...
- Fix the printer for scopes
- Improve the printer for struct types
- Remove `Print.expr'`. Use `Expr.format` as the function with simplified arguments instead.
2023-05-02 16:33:23 +02:00
Louis Gesbert
83e7a845fe
Cleanup expr printer interface
...
- `Print.expr` no longer needs the context
- This removes the need for `expr ~debug` + `expr_debug` ;
use `Print.expr` for normal (non-debug) output,
and `Print.expr' ?debug ()` for possibly debug output.
- This improves consistency of debug expr output in many places
- Prints simplified operators (without type suffix) in non-verbose mode
(this patch also fixes some cases of `Expr.skip_wrappers` and leverages the
binder equality provided by Bindlib)
2023-05-02 13:32:16 +02:00
Louis Gesbert
c249cef3cc
Printer: flatten nested let-ins too
2023-05-02 11:53:30 +02:00
Louis Gesbert
3e7a2a34ab
More printer improvements
2023-05-02 11:49:09 +02:00
Louis Gesbert
cec52d47de
Printer: flatten "else if"
2023-05-02 11:49:09 +02:00
Louis Gesbert
8a2b50289e
Printer: add some missing boxes
2023-05-02 11:49:09 +02:00
Denis Merigoux
e6bccd716d
Fix a Catala program bug thanks to Proof mode!
2023-04-27 18:03:27 +02:00
Denis Merigoux
41d74bc673
Correctly hide function body on the trace
2023-04-27 15:07:04 +02:00
Denis Merigoux
40af4d3a46
Disable optimization that was messing with the Proof backend
2023-04-27 12:13:18 +02:00
Louis Gesbert
49bd5b1915
Cleanup type of Expr.make_app
2023-04-24 15:14:54 +02:00
Louis Gesbert
d7d8bab9b8
Printer: rainbow parens (rewritten)
2023-04-24 14:56:19 +02:00
Denis Merigoux
32ee2a0c72
Various small fixes to resolve conversations
2023-04-21 14:54:07 +02:00
Denis Merigoux
d384db4e71
Reestablish some default constructor optimizations
2023-04-21 14:35:10 +02:00
Denis Merigoux
22b24a8634
Fusion of all optimizations done correctly
2023-04-21 12:32:09 +02:00
Denis Merigoux
1bb338526d
Generalized optimizations
2023-04-21 11:56:07 +02:00
Denis Merigoux
067c7b9155
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-04-21 10:55:36 +02:00
Louis Gesbert
fc70d18ea8
Correctly typed dcalc/lcalc interpreter
2023-04-20 14:04:29 +02:00
Louis Gesbert
55d343d81c
Version that uses object types instead of polymorphic variants
...
in order to get the row polymorphism controlling the GADT that encodes our AST
2023-04-20 13:51:20 +02:00
Denis Merigoux
f877544368
Remove optimizations for big tests
2023-04-18 15:56:04 +02:00
Denis Merigoux
0ec75ad589
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-04-18 14:37:02 +02:00
adelaett
5e46253140
removed one remaning debuging print, and updating all the tests
2023-04-14 17:59:08 +02:00
adelaett
e712c39efb
fix python printing of handle_default
2023-04-14 17:32:09 +02:00
Louis Gesbert
b4a68fa392
Add experimental lazy interpreter as a plugin
...
To try it (without installing Catala):
```shell-session
$ make plugins
$ export CATALA_PLUGINS=_build/default/compiler/plugins
$ dune exec -- catala lazy examples/aides_logement/tests/tests_calcul_apl_locatif.catala_fr -s Exemple2
```
Keep in mind that this is a work-in-progress prototype :)
2023-04-14 16:56:57 +02:00
adelaett
e14267b0d7
fixing printing
2023-04-14 15:03:26 +02:00
adelaett
02eeb4ad11
Include Bindlib_ext to Expr.Box
2023-04-14 14:18:28 +02:00
adelaett
ebf72213a7
deadcode
2023-04-14 14:12:36 +02:00
adelaett
ddeaa67ff7
Expr.eid -> Expr.fun_id
2023-04-14 14:07:51 +02:00
adelaett
484ae44298
disable detailled printing of enum and struct
2023-04-14 13:59:29 +02:00
adelaett
a9809b69a9
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-04-14 11:19:58 +02:00
adelaett
5833608179
deadcode elim
2023-04-14 10:56:15 +02:00
adelaett
a45ae1869a
Fix #449 by removing premature optimizations on a smart constructor.
2023-04-14 10:50:21 +02:00
Louis Gesbert
e19e4af12d
Vastly improve the printer
...
* fix lots of Format boxes
* add parens based on precedence in the printer
* fix interaction of Format and the colored line debug tags
2023-04-13 18:15:22 +02:00
adelaett
cc66023e51
Thunking justifications and conclusion in avoid_translation pass
2023-04-12 10:58:21 +02:00
adelaett
1a46cd8914
initialize inputs argument with default ENone value
2023-04-11 16:14:52 +02:00
adelaett
0cfc446455
implementing the behavior of handle_exceptions_opt for the lcalc interpretor
2023-04-11 14:09:57 +02:00
adelaett
3e35d4b826
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-04-11 11:49:22 +02:00
adelaett
6af7456b98
typo
2023-04-07 16:32:43 +02:00
adelaett
37b2cdf1aa
printing bindm as let*
2023-04-07 16:21:42 +02:00
adelaett
0e8eed7ee1
program equality function
2023-04-07 12:10:08 +02:00
adelaett
300d3b561d
fix too-many-spaces
2023-04-07 12:09:38 +02:00
adelaett
6c7ac061d4
fix identation and use new formatting functions as default
2023-04-07 11:57:14 +02:00
adelaett
618ff0518d
move printing of program & scope to the Print module
2023-04-07 11:26:10 +02:00
adelaett
12d85570e8
fix printing boxes & merge issues
2023-04-07 10:51:21 +02:00
Denis Merigoux
77d6a97ddc
Formatting
2023-04-06 16:35:28 +02:00
alain
ec40de83fc
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-04-06 13:57:22 +02:00
adelaett
73423a3cb6
typo
2023-04-06 13:50:58 +02:00
adelaett
65d9ac759a
review printer
2023-04-06 13:50:48 +02:00
adelaett
0906ba025b
reviewed operator.ml
2023-04-06 13:50:34 +02:00
adelaett
5a3a6a9dc1
remove unused json ppx
2023-04-06 13:50:22 +02:00
alain
f16842b71a
add a todo
2023-04-06 13:18:33 +02:00
adelaett
75e496c62d
correct types
2023-04-05 16:35:12 +02:00
adelaett
72f6ac9f58
append lcalc to driver
2023-04-05 15:42:26 +02:00
adelaett
256c0625ff
forward -> propagate
2023-04-05 14:57:02 +02:00
Louis Gesbert
0098f00512
Yet some more small improvements to the AST encoding
2023-04-05 10:32:58 +02:00
Louis Gesbert
0c1cd481e1
Interpreter on dcalc + lcalc (the simple way)
...
I made some changes in the meantime, and had to factorise e.g. the handling of
the `EEmptyError` case, but this is the simple approach type-wise of making the
function type for `∀ 'a. 'a —> 'a` (with `assert false` match cases), then
restricting its type do `dcalc` or `lcalc` in the `.mli`.
2023-04-05 10:32:58 +02:00
Louis Gesbert
79ff776d2e
Multi-pass interperter: typing (but useless) version
2023-04-05 10:32:58 +02:00
adelaett
503cd6b1e5
implementation of the behavior
2023-04-05 10:32:52 +02:00
adelaett
06147ac5b6
typing working in the file, but does not accept
...
Lcalc for some reason
2023-04-05 10:32:52 +02:00
adelaett
68e0f0a0ee
changing position of the interpreter
2023-04-05 10:32:52 +02:00
adelaett
61bdd751e4
corrected program equality
2023-04-04 15:18:08 +02:00
Denis Merigoux
38b0041bb8
Add common linting passes to Catala ( #438 )
2023-04-03 14:01:02 +02:00
Denis Merigoux
d147238088
Apply suggestions by @altgr
2023-04-03 13:42:14 +02:00
adelaett
685785eaa3
adding assert_closed function
2023-04-03 11:20:19 +02:00
adelaett
e9ead93f3f
fix typing errors
2023-03-31 16:01:05 +02:00
adelaett
573df8416f
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-03-31 15:52:06 +02:00
Denis Merigoux
565aa23b8f
Implemented some lints
2023-03-31 11:47:44 +02:00
adelaett
69ac8ca929
implementation of fold, reduce, map & filter in without exceptions
...
Work in progress: not working for filter & map
2023-03-31 11:24:43 +02:00
Louis Gesbert
038861a52c
Generic mapping function across different ASTs
...
Used in lcalc/compile_with_exceptions only at the moment
2023-03-30 18:57:51 +02:00
Louis Gesbert
1208744c6b
EmptyError is no longer a literal
...
it's much simpler to handle it as an AST node, as that makes the literal
identical across all AST passes.
2023-03-30 18:54:50 +02:00
Denis Merigoux
3c364aa1fa
Progress on linting, bugguy unused field detection
2023-03-30 18:52:29 +02:00
Louis Gesbert
817dcb09fc
Simplify variable translation functions
2023-03-30 15:41:03 +02:00
Louis Gesbert
4973c74410
Remove date rounding mode from Operator.translate
2023-03-30 15:33:00 +02:00
Louis Gesbert
a415355a39
Rework the AST Gadt to allow merging of different ASTs
...
The phantom polymorphic variant qualifying AST nodes is reversed:
- previously, we were explicitely restricting each AST node to the passes where it belonged using a closed type (e.g. `[< dcalc | lcalc]`)
- now, each node instead declares the "feature" it provides using an open type (e.g. `[> 'Exceptions ]`)
- then the AST for a specific pass limits the features it allows with a closed type
The result is that you can mix and match all features if you wish,
even if the result is not a valid AST for any given pass. More
interestingly, it's now easier to write a function that works on
different ASTs at once (it's the inferred default if you don't write a
type restriction).
The opportunity was also taken to simplify the encoding of the
operators, which don't need a second type parameter anymore.
2023-03-30 15:30:08 +02:00
adelaett
61830bc348
fixing runtime merge errors
2023-03-30 11:02:35 +02:00
adelaett
6dee3874cc
Merge branch 'master' into adelaett-withoutexceptionsfix
2023-03-30 10:50:32 +02:00
adelaett
df740eed05
fixing with-exceptions
2023-03-28 10:07:01 +02:00
adelaett
37dcd96e41
correct scope debug formatting
2023-03-28 09:55:25 +02:00
adelaett
ba1c83f278
correct printing of option type
2023-03-28 09:52:40 +02:00
Denis Merigoux
e4c4339856
Small fixes
2023-03-28 09:38:47 +02:00
adelaett
9806eb7e0f
format for program
2023-03-23 13:46:17 +01:00
Denis Merigoux
578091f196
Restore check
2023-03-21 13:49:16 +01:00
Denis Merigoux
aa8ab3be3d
Merge branch 'master' into c_backend
2023-03-21 12:14:10 +01:00
adelaett
8c66fabe6a
fix mission operators in translate
2023-03-17 17:20:46 +01:00
adelaett
9a34ee95b1
equality program
2023-03-17 17:20:35 +01:00
adelaett
850a1fdb56
more optimization on fold
2023-03-17 11:34:52 +01:00
Raphaël Monat
64fa32392f
Update generated files
2023-03-16 17:20:09 +01:00
adelaett
4038ea02be
rainbox parenthesis
2023-03-16 17:15:08 +01:00
Raphaël Monat
5fc1e8e5d5
Fix operator printing
2023-03-16 16:55:55 +01:00
Raphaël Monat
7021c41f93
Add date rounding option within scopes
2023-03-16 16:55:55 +01:00
adelaett
91ed8e1f5d
special handling of the option constructor as a polymorphic one with custom typing rules
2023-03-14 18:31:32 +01:00
adelaett
366a0d952b
introducing new operators for handleing defaults
2023-03-14 18:30:58 +01:00
adelaett
21577ff1ba
introducing usefull term in the shared ast
2023-03-10 15:33:58 +01:00
Louis Gesbert
42b8adb968
Add a duration / duration
overload
...
Interstingly enough, it was already implemented in the Python backend.
Required to implement *pro rata temporis*, which the US tax section 121 does
make use of.
Only allowed for durations expressed in days (as returned by `<date> - <date>`),
of course.
2023-03-08 15:17:58 +01:00
adelaett
78f121b44a
before any issues with mark on code_item
2023-03-03 11:39:55 +01:00
adelaett
02780f5439
Abandoning json conversion :(
2023-02-28 08:36:45 +01:00
adelaett
5fe09238c5
better error management when building with make_app
2023-02-28 08:36:45 +01:00
adelaett
b5f3621302
serialization wip
2023-02-27 11:20:59 +01:00