Skip to content
This repository was archived by the owner on Apr 4, 2026. It is now read-only.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZigCHR


For the talk I gave at Zigtoberfest 2024, I coded up a CHR embedding for Zig using the FreeCHR framework.

If you want to learn more about FreeCHR, go ahead and read this paper. If you want to know more about cool properties that CHR can bring to your algorithms, visit my website for the talk

Project Structure

  • src/: Here you can find two example on how to use the embedding.
  • lib/: The embedding itself.
  • utils/: Some useful data structures and functions unrelated to CHR.

How to build it

For each file inside the src directory, there exists a step. So lets say you want to build and run the min example. You can run zig build min to do so. For all examples present in this repo, you can pass the query constraints though the commandline like the following: zig build min -- 1 3 5.

If you add your own file in the src folder, the build system will automatically generate a step for you.

Additional flags

You can pass different flags to the build process to control how much logs the embedding produces:

  • -Dlog enabled logging. The embedding will print which rules were fired with which constraints, whats put into the store, ...
  • -Dnotag wont print a constraints tag.
  • -Dmatchings requires -Dlog. The embedding will print what combination of constraints are considered.
  • -Dstore requires -Dlog. The embedding will print the constraint store when it's modified.

About

A FreeCHR instance written in Zig

Topics

Resources

Stars

8 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages