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
- No backward jump
- 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