理解MicroKanren DSL的核心术语有点困难。第 4 节说:
语言的术语由
unify
操作员定义。在这里,语言的术语由变量、在 下被视为相同的对象eqv?
以及上述内容的对组成。
但他们从不描述“对”的实际含义。对是否应该表示两个子项的相等性,如下所示:
type 'a ukanren = KVar of int | KVal of 'a | KEq of 'a kanren * 'a kanren
所以像这样的术语:
(call/fresh (λ (a) (≡ a 7)))
生成一对(≡ a 7)
?
编辑:经过进一步考虑,我认为不是这样。论文中提到“pair”似乎要晚得多,对基本系统进行了扩展和改进,这意味着这些对在基本介绍的术语中没有任何意义。这个对吗?