YCHR aims to become a modern and modular CHR compiler with support for multiple host languages.
YCHR is implemented in Haskell.
The compilation strategy is based on Peter Van Weert, Pieter Wuille, Tom Schrijvers, Bart Demoen. 2008. CHR for imperative host languages.
- Module system ร la SWI Prolog.
- Compilation to an intermediate imperative DSL to abstract over the various backends.
- Minimal interpreter with few predefined built-in constraints.
- Scheme backend.
- JavaScript backend.
- Some of the performance optimizations described in CHR for imperative host languages.
- Rule tracing.
- Standard library.
- A library for frontend programming with the JavaScript backend.
- Static type-checker.
- More performance optimizations.
- Visual tools to debug and inspect the runtime.
- Meta-programming via the interpreter.
- Haskell integration through TemplateHaskell.
- Alternative concurrent semantics.
- Erlang backend.
- Aggregates, as described in Van Weert et al. 2008. Aggregates for CHR through program transformation.