Go to file
Ekdohibs 02ef5052f9 Fix infinite loop in type simplification (fixes #2) 2018-12-11 00:06:27 +01:00
alphalib Add prototype implementation of typed effects (infers types less general than we wish). 2018-01-15 14:33:25 +01:00
kremlin Add initial provided code. 2017-12-16 14:00:36 +01:00
report Add comment on bisubstitutions when instanciating polymorphic types. 2018-02-16 10:04:07 +01:00
test Add prototype implementation of typed effects (infers types less general than we wish). 2018-01-15 14:33:25 +01:00
tests Fix infinite loop in type simplification (fixes #2) 2018-12-11 00:06:27 +01:00
.gitignore Add report.bib and extend .gitignore with LaTeX generated files. 2018-02-16 09:43:14 +01:00
.merlin Add initial provided code. 2017-12-16 14:00:36 +01:00
Apply.ml Fix an issue with function calls with too many or too few arguments (fixes #1) 2018-12-10 23:50:56 +01:00
CPS.ml Add higher-order CPS translation. 2018-01-11 23:14:53 +01:00
CPS.mli Add initial provided code. 2017-12-16 14:00:36 +01:00
Cook.ml Fix infinite loop in type simplification (fixes #2) 2018-12-11 00:06:27 +01:00
Cook.mli Add type checking and type inference. 2017-12-28 15:53:11 +01:00
Defun.ml Fix an issue with function calls with too many or too few arguments (fixes #1) 2018-12-10 23:50:56 +01:00
Defun.mli Fix an issue with function calls with too many or too few arguments (fixes #1) 2018-12-10 23:50:56 +01:00
Dispatch.ml Fix an issue with function calls with too many or too few arguments (fixes #1) 2018-12-10 23:50:56 +01:00
Error.ml MLsub: finally completely working. 2018-01-17 22:06:40 +01:00
Error.mli MLsub: finally completely working. 2018-01-17 22:06:40 +01:00
Finish.ml Get rid of some warnings 2018-02-16 09:59:32 +01:00
Finish.mli Add initial provided code. 2017-12-16 14:00:36 +01:00
LICENSE Add LICENSE file. 2018-03-10 10:07:07 +01:00
Lambda.ml Get rid of some warnings 2018-02-16 09:59:32 +01:00
Lexer.mll Add effect arguments in polymorphism 2018-02-12 18:42:22 +01:00
Main.ml Fix an issue with function calls with too many or too few arguments (fixes #1) 2018-12-10 23:50:56 +01:00
Makefile Fix an issue with function calls with too many or too few arguments (fixes #1) 2018-12-10 23:50:56 +01:00
Parser.mly Add effect arguments in polymorphism 2018-02-12 18:42:22 +01:00
README Extend README a bit 2018-02-16 09:40:39 +01:00
RawLambda.ml Add effect arguments in polymorphism 2018-02-12 18:42:22 +01:00
Tail.ml Effects almost working 2018-01-04 09:49:19 +01:00
Top.ml Fix an issue with function calls with too many or too few arguments (fixes #1) 2018-12-10 23:50:56 +01:00
_tags Add initial provided code. 2017-12-16 14:00:36 +01:00
prologue.h Add prototype implementation of typed effects (infers types less general than we wish). 2018-01-15 14:33:25 +01:00

README

joujou is a compiler from a small functional language to C.

It supports curried functions, algebraic data types and deep pattern matching,
algebraic effects (with multishot continuations), a static type system with
inference of types and effects, supporting subtyping. It also has a generational
garbage collector included in compiled programs (only the minor generation is
actually collected for now, though).

Its compilation scheme rests on continuation-passing style transformation and
defunctionalisation -- as such, compiled programs are not very efficient. It
however supports efficient application of a n-ary function to all of its
arguments, without building intermediate closures.

Note: see report/report.pdf (in French) for details about the implemented features.