MiniKanren miniKanren是一类关系型编程语言miniKanren可以通过给定的关系表达式和计算结果来反向推导找出符合条件的输入变量的取值组合程序员可以通过加入关系表达式对输入变量和计算结果添加约束条件miniKanren通过搜索树的办法来搜索所有可能的输入变量如果搜索空间非常大而且符合条件的结果不存在miniKanren的搜索有可能永远也不会停止 evalo是一个用miniKanren写的程序evalo是以关系表达式为输入和输出的程序在miniKanren中调用evalo的方法是evalo q qevalo具有自产生程式的功能 Dan Friedman的The Reasoned Schemer一书使用miniKanren来介绍关系型编程该书还提供了miniKanren在Scheme语言上的一个完整实现该实现的核心代码的长度仅仅只有两页纸miniKanren的Scheme实现的设计目的是容易理解修改并扩展 目前HaskellRacketRubyClojure以及Python中有miniKanren的具体实现其中最典型的实现是Scheme的版本Clojure语言里的corelogic也是受到miniKanren启发 Kanren这个词来自于日语関連即关联