嘿!我有一个小文档改进建议
当使用常规`defn`创建关系时,我发现如果要使用多个关系和目标在您定义的关系中,则需要包含一个空{{(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“默默失败”。我这里可能只是希望Wiki文档中有一个警告。我找不到它,但它可能已经存在?我会很高兴将其添加到文档中并发送一个PR。