A Prolog-ish interpreter written in Rust, intended perhaps for use in the compiler, but also for experimentation.
chalk
is named after Chalkidiki, the area where Aristotle was
born. Since Prolog is a logic programming language, this seemed a
suitable reference.
Here are some blog posts talking about chalk:
- Lowering Rust Traits to Logic
- Explains the basic concepts at play
- Unification in Chalk, Part 1
- An introduction to unification
- Unification in Chalk, Part 2
- Extending the system for associated types
- Negative reasoning in Chalk
- How to prove that something is not true
- Query structure in chalk
- The basic chalk query structure, with pointers into the chalk implementation
- Cyclic queries in chalk
- Handling cyclic relations and enabling the implementation of implied bounds and other long-desired features in an elegant way
If you are interested in contributing to chalk, please take a look at the Contribution guide. You might also want to take a look at the glossary.