an implementation of miniKanren in Ruby
miniKanren is a fascinating little DSL for logic programming. it can be used to solve complex logical problems that other languages struggle at. it is based on ideas from Scheme and Prolog, and it's most popular implementation is Clojure's core.logic.
[X] fresh
[X] run
[X] union
[X] conde
[ ] complete stream for non-conde goals
[ ] additional constraints (symbolor, numbero, =/=)
[ ] more testing
[ ] sample program (path finder? sudoku solver? boolean satisfiability?)