fmm
fmm copied to clipboard
The uncurried minimal functional programming language for CPS transformation
F--
The uncurried minimal functional programming language
It's designed to be a compiler target for high-level functional programming languages.
Features
- SSA
- Minimal
- Only 4 control instructions
branchcallifreturn
- No backward jump
- Only 4 control instructions
- Portable
- Pointer-sized integer
- C-like union type
- Boolean type
- Structural typing
- CPS transformation
- IR builder library
Backends
- LLVM
- C
- No guarantee for tail call optimization
Limitations
- Inductive types
- Weak typing
- No type inference
Calling convention compatibility table
| Caller \ Callee | Target (C) | Tail | Source (CPS) |
|---|---|---|---|
| Target (C) | x | x | *1 |
| Tail | x | x | *1 |
| Source (CPS) | x | x | x |
- *1: Suspension in functions is not supported.
Design notes
- Expressions have no side effect.
- You can use them in constants.
- Instructions can have side effects.
License
Apache 2.0