2

语境

根据 core.logic 文档,conde 确实是 condi,这意味着它可能不会以与 mini-kanren 相同的顺序返回。

问题

因此,如果我有以下形式:

(run 1 [q]
  (conde ...))

是否可能 core.logic / mini-kanren 会给我不同的结果,因为:

  • conde 可以以不同的顺序返回结果
  • run 1 只取其中一个,因此两者可能有不同的第一个元素

谢谢!

4

1 回答 1

1

是的,这是可能的。conde不保证答案顺序(它非常依赖于实现并且无关紧要,因为所有替代方案都是并行探索的)。

在玩 core.logic 时,它多次咬我,因为单元测试采用特定的顺序。

AFAIK,在 Reasoned Schemer 第 2 版中,conde将是第 1 版condi

于 2012-05-31T11:36:12.727 回答