Skip to content

a proof-of-concept programming language based on Call-by-push-value

License

Notifications You must be signed in to change notification settings

zydeco-lang/zydeco

Repository files navigation

Zydeco 🪗

Zydeco is a proof-of-concept programming language based on Call-by-push-value.

Running Zydeco

Create a file hello-world.zydeco:

main
  do ! 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
hello, world!

Run zydeco --help for further usage information.

Intro to Zydeco

We now have a toy "literate zydeco" written in zydeco! Try it out by running

cd docs/spell && ./build.sh

and the product will show up right in the folder - which is also a series of guide to programming in zydeco.

A legacy version of the tutorial lies here. With system-F, type parameter and type alias shipped in we'll update the tutorial shortly.

We will develop more introductory material on zydeco when we have implemented more features. For now, you can also choose to browse zydeco-lang/tests/ for some example programs.

To run all tests

cargo test --all

Repository Structure

.
├── Cargo.toml
├── zydeco-lang
│  ├── derive
│  ├── src
│  └── tests
├── cli
├── web
└── ...
  • zydeco-lang/: the library implementing the parser, type checker and interpreter for the Zydeco language.
  • zydeco-lang/tests/: test cases and example code
  • cli/ Command-line interface
  • web/ Web interface

Related Literature

Zydeco is based on the Call-by-push-value calculus introduced by Paul Blain Levy: https://dl.acm.org/doi/10.1145/3537668.3537670

Related Language Implementations

About

a proof-of-concept programming language based on Call-by-push-value

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages