您好!我有一个关于文档改进的小建议
当使用常规`defn`创建关系时,我发现在您的`defn`ed关系内部使用多个关系和目标时,需要一个空{{(fresh [] ...)}},否则您在`defn`的隐含do中的目标没有效果,只有最后一个有作用。
简单示例
{{
defn-logic> (defn test [a b]
(== a 1)
(== b 2))
#'defn-logic/test
defn-logic> (run* [q] (fresh [a b]
(== q [a b])
(test a b)))
([_0 2])
defn-logic> (defn test [a b]
(fresh []
(== a 1)
(== b 2)))
#'defn-logic/test
defn-logic> (run* [q] (fresh [a b]
(== q [a b])
(test a b)))
([1 2])
defn-logic>
}}
再次强调,这是完全正确和合理的,但对初学者来说可能有些令人困惑,因为在隐含do中的“失败是沉默的”。这里我可能只是想提醒一下维基文档。我没有找到它,但它可能已经存在了?我很乐意将其添加到文档中并发送PR。