Valeri: a pure Lisp with algebraic effects
emacs | ||
src | ||
test | ||
.clang-format | ||
.clangd | ||
.gitignore | ||
CMakeLists.txt | ||
example.vli | ||
flake.lock | ||
flake.nix | ||
LICENSE | ||
lisp.nix | ||
README.md |
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
- Matrix: @knazarov:knazarov.com.
- Email: mail@knazarov.com
Acknowledgements
The name of the language is the name of my love, Valeri.