Zydeco is a proof-of-concept programming language based on Call-by-push-value.
The instructions are located in lib/oopsla/README.md.
Create a file hello-world.zydeco
:
main
! write_line "hello, world!"
{ ! exit 0 }
end
Then run
$ cargo run -- run hello-world.zydeco
hello, world!
Alternatively, run
cargo build --release
to build the executable which will be stored at target/release/zydeco
.
Then run
./target/release/zydeco run hello-world.zydeco
and see
hello, world!
Run zydeco --help
for further usage information.
We now have a toy "literate zydeco" written in zydeco! Try it out by running
cd docs/spell && make build
and the product will show up right in the folder - which is also a series of guide to programming in zydeco. Maybe we should call it "co-literate zydeco" because it turns commented zydeco into markdown.
A legacy version of the tutorial lies here.
You might find the short tutorial easier to follow if the previous spell
guide goes too fast.
We will develop more introductory material on zydeco when we have
implemented more features. For now, you can also choose to browse lib/
for
some example programs.
To run all tests
cargo test --all
.
├── Cargo.toml
├── lang
│ ├── derive
│ ├── driver
│ ├── dynamics
│ ├── lib
│ ├── src
│ ├── statics
│ ├── surface
│ ├── syntax
│ ├── tests
│ └── utils
├── cli
├── web
└── ...
lang/
: the library implementing the parser, type checker and interpreter for the Zydeco language.lib/
: standard library and example code (also serving as test cases)cli/
Command-line interfaceweb/
Web interface
Zydeco is based on the Call-by-push-value calculus introduced by Paul Blain Levy: https://dl.acm.org/doi/10.1145/3537668.3537670