Pierre Goutagny
6a39d066f2
Unify rounding operations in OCaml runtime
2024-01-10 13:43:19 +01:00
Louis Gesbert
6855870f02
Add tuples to the surface language, allow tuples for argument passing ( #554 )
2024-01-08 13:20:11 +01:00
Louis Gesbert
12f208b3fc
Adding tuples: fixes following review
2024-01-08 12:16:07 +01:00
Denis Merigoux
919dd2b812
Monomorphization properly done
2023-12-20 17:45:39 +01:00
Denis Merigoux
dcd883e53c
Uppercase constructors
2023-12-19 17:40:38 +01:00
Denis Merigoux
a9764d607e
Merge branch 'master' into c_backend
2023-12-19 17:39:02 +01:00
Louis Gesbert
d3e7c565a9
Closure conversion: use multiple let-in
2023-12-19 17:30:32 +01:00
Louis Gesbert
5384394a72
Fix typing upon detuplification
2023-12-19 17:30:32 +01:00
Louis Gesbert
a2efc94fd2
Register the option type in ctx when used in lcalc
2023-12-19 17:30:28 +01:00
Denis Merigoux
6520d4863e
Restore tests
2023-12-19 17:29:37 +01:00
Louis Gesbert
a1c1a7756f
Update invariant tests outputs
2023-12-19 17:27:44 +01:00
Louis Gesbert
2823795f9f
AST change: more specific application
...
As part of making tuples first-class citizens, expliciting the arity upon
function application was needed (so that a function of two args can
transparently -- in the surface language -- be applied to either two arguments
or a pair).
It was decided to actually explicit the whole type of arguments because the cost
is the same, and this is consistent with lambda definitions.
A related change done here is the replacement of the `EOp` node for operators by
an "operator application" `EAppOp` node, enforcing a pervasive invariant that
operators are always directly applied. This makes matches terser, and highlights
the fact that the treatment of operator application is almost always different
from function application in practice.
2023-12-19 17:27:40 +01:00
Denis Merigoux
af16be501a
Remove useless optimizations caught just after
2023-12-19 17:26:36 +01:00
Denis Merigoux
9d9a2c4496
Start to implement proper monomorphization
2023-12-19 17:26:17 +01:00
Louis Gesbert
94ebc1b65e
Allow deconstruction of tuples using let in
2023-12-19 17:25:44 +01:00
Louis Gesbert
df3ab64fe9
Add tuples to the surface language
...
No helpers to destruct them at the moment
2023-12-19 17:25:44 +01:00
Louis Gesbert
50730ab8ff
Small optimisations ( #553 )
2023-12-19 17:17:36 +01:00
Louis Gesbert
fb51f58261
Optimise away trivially-true errors-on-empty
2023-12-19 16:10:11 +01:00
Louis Gesbert
ea4e191f27
Add optimisation to skip variable aliasings
...
This particularly of effect to the code introduced by closure conversion.
2023-12-19 16:07:22 +01:00
Louis Gesbert
7233ec403a
Printer: add parens after constructors
2023-12-19 16:07:22 +01:00
Louis Gesbert
ad0afa2f64
Small interpreter optimisation
...
This is unholy, but we're manually bringing a typing proof so it may be
acceptable...
2023-12-19 16:07:22 +01:00
Louis Gesbert
50cb0db890
[breaking changes] update syntax and CLI ( #546 )
2023-12-19 16:05:51 +01:00
Louis Gesbert
e123d7eb95
Change type syntax of collection
into list of
2023-12-19 15:26:44 +01:00
Louis Gesbert
3779a249db
Unify all CLI arguments to use -
rather than _
...
it's more common on UNIXes and the mix was unpleasant.
2023-12-19 15:25:37 +01:00
Denis Merigoux
85bbb7be1c
Add monomorphizing option
2023-12-19 15:01:06 +01:00
Denis Merigoux
b50db59f50
Fixes decimal user-facing printer bug ( #552 )
2023-12-19 15:00:09 +01:00
Denis Merigoux
9358ad945e
Better type translation in closure conversion
2023-12-19 14:31:57 +01:00
Denis Merigoux
14589010a0
Restore tests
2023-12-19 14:13:42 +01:00
Denis Merigoux
50a9e15906
Restore tests
2023-12-19 13:59:40 +01:00
Denis Merigoux
e6a35f31b6
Fixes #551
2023-12-19 13:39:24 +01:00
Denis Merigoux
366c351930
Correctly compiles let bindings in expressions
2023-12-19 12:03:23 +01:00
Denis Merigoux
0323e71edb
Default types should be eliminated in compile_with_exceptions
2023-12-18 15:23:08 +01:00
Denis Merigoux
4eead4850b
There are no more defaults in type after compile_with_exceptions...
2023-12-18 15:14:28 +01:00
Denis Merigoux
91f8451899
Better beta-reduction
2023-12-18 14:49:43 +01:00
Denis Merigoux
35f829cd65
Fix default optimisation
2023-12-18 14:42:58 +01:00
Denis Merigoux
10d8c0b19f
Ignore files
2023-12-13 17:13:25 +01:00
Denis Merigoux
fe5b842a03
Simple example compiles and runs fine
2023-12-13 16:58:02 +01:00
Denis Merigoux
1f91c16e43
Fix little bug
2023-12-13 16:40:22 +01:00
Emile Rolley
a0ec4f8aff
fix(french-law): move deps in dev
2023-12-13 13:58:26 +01:00
Emile Rolley
0e4b108882
pkg(french-law): published new patch for @catala-lang/french-law (v0.8.11)
2023-12-13 11:42:47 +01:00
Denis Merigoux
5c49581207
Compiling simple program correctly to C
2023-12-13 11:07:08 +01:00
Denis Merigoux
827fcef469
More progress but enums also require no struct literals
2023-12-12 18:21:20 +01:00
Denis Merigoux
adfb9297d3
Progress on compiling
2023-12-12 16:25:02 +01:00
Denis Merigoux
d88f67bb2c
Progress
2023-12-12 16:08:40 +01:00
Denis Merigoux
9198fe2514
Restore tests: more typing now
2023-12-12 13:52:57 +01:00
Denis Merigoux
7e221b29eb
Gets C89 struct initialization right
2023-12-11 17:28:32 +01:00
Denis Merigoux
37ab4187bd
Almost there with structs
2023-12-11 17:08:32 +01:00
Denis Merigoux
aca1d0e712
Fields in AST nodes
2023-12-11 15:59:47 +01:00
Denis Merigoux
3711026a4f
Beginning to compile
2023-12-11 14:47:09 +01:00
Denis Merigoux
5b7470fd0d
Compile HandleDefaultOpt specially
2023-12-11 14:34:31 +01:00