cKanren miniKanren With Constraints
The authors present cKanren, a framework for Constraint Logic Programming (CLP) in Scheme. cKanren subsumes miniKanren, a logic programming language embedded in Scheme. cKanren allows programmers to easily use, define, and combine different kinds of constraints. They provide two example constraint systems: one over finite domains and one over trees. The cKanren framework is designed to encourage an especially pure style of logic programming in which goals can be reordered arbitrarily without affecting a program's semantics (with an important decidability-related caveat).