The Anselm Programming Language
Anselm is a new programming language based on a paradigm of dependently typed call-by-push-value.
Key Features
- Tiny yet expressive core (current reference interpreter is ~400 lines of Prolog, and will probably be ~5000 when complete)
- Simple, yet flexible grammar with truly regular lexing and LL(1) parsing.
- Safe, deterministic, runtime-less memory management based on stratified reference-counted regions
- Ada-style dynamically-sized LIFO allocation eliminates most need for the heap
- Deadlock-free concurrency basic on transactional memory
- Efficient, portable access to hardware
- Principled overloading with modular implicit parameters
- Powerful, ML-style module system
- Type-safe metaprogramming based on multi-stage programming
- Call-by-push-value semantics allows for principled coexistence of strictness and laziness
- Effect handlers
- Bidirectional Functions
- Rich set of Builtin Types
Please also check out our frequently asked questions!
If you are interested in learning more about the theoretical background of Anselm, we are compiling a bibliography.
Implementations
Community
We operate a forum on this server (viewable under the Forum tab).
This server also hosts an irc server at irc.anselm.dev
.