https://github.com/ekdohibs/joujou
A compiler from a small functional language to C. Especially features algebraic effects and handlers with multishot continuations, and a static type system with inference of types and effects, with subtyping.
https://github.com/ekdohibs/joujou
algebraic-effects compiler continuations functional-programming handlers type-inference
Last synced: 7 months ago
JSON representation
A compiler from a small functional language to C. Especially features algebraic effects and handlers with multishot continuations, and a static type system with inference of types and effects, with subtyping.
- Host: GitHub
- URL: https://github.com/ekdohibs/joujou
- Owner: Ekdohibs
- License: apache-2.0
- Created: 2018-02-16T11:42:36.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-10T23:06:34.000Z (almost 7 years ago)
- Last Synced: 2025-03-16T21:11:40.646Z (7 months ago)
- Topics: algebraic-effects, compiler, continuations, functional-programming, handlers, type-inference
- Language: OCaml
- Homepage:
- Size: 509 KB
- Stars: 89
- Watchers: 9
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README
- License: LICENSE
Awesome Lists containing this project
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.