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.



We operate a forum on this server (viewable under the Forum tab).

This server also hosts an irc server at irc.anselm.dev.