Valeri: a pure Lisp with algebraic effects
Find a file
2024-11-29 23:04:04 +00:00
emacs Move all .el files to emacs/ directory 2024-10-12 19:49:54 +01:00
src Make memory allocation safer by avoiding passing raw pointers around 2024-11-29 23:04:04 +00:00
test Temporarily revert the support for redefining variables in the body 2024-10-13 21:58:41 +01:00
.clang-format Initial commit - add basic boilerplate for POD types 2024-07-19 02:29:30 +01:00
.clangd Initial commit - add basic boilerplate for POD types 2024-07-19 02:29:30 +01:00
.gitignore Initial commit - add basic boilerplate for POD types 2024-07-19 02:29:30 +01:00
CMakeLists.txt Implement exception guards and serialization/deserialization 2024-10-05 20:55:46 +01:00
example.vli Update README.md for brevity 2024-11-03 21:07:11 +00:00
flake.lock Initial commit - add basic boilerplate for POD types 2024-07-19 02:29:30 +01:00
flake.nix Initial commit - add basic boilerplate for POD types 2024-07-19 02:29:30 +01:00
LICENSE Initial commit - add basic boilerplate for POD types 2024-07-19 02:29:30 +01:00
lisp.nix Initial commit - add basic boilerplate for POD types 2024-07-19 02:29:30 +01:00
README.md Update README.md for brevity 2024-11-03 21:07:11 +00:00

Valeri: a pure Lisp with algebraic effects

This language is created for people to have fun with functional programming, while not requiring to learn difficult concepts. Because of its dynamism and purity, this is what you can do:

  • Send any object over the network (including function closures)
  • Suspend and resume execution at any point in time (and even travel back in time)
  • Use any object as a dictionary key

Valeri doesn't have classes, and instead relies on passing primitive data structures around, like dictionaries, arrays, sets, etc.

All IO in the language is implemented by using delimited continuations.

Getting started

There are no packages yet, so you'd need to compile from source. You'd need cmake and either gcc or clang. To build:

cmake .
make

And then either run the REPL:

./valeri

Or run the example:

./valeri example.vli

To run tests:

ctest

Get in touch

Acknowledgements

The name of the language is the name of my love, Valeri.