在< ':style="color:#34495e;" :href="https://www.surveymonkey.com/r/clojure2024">2024 Clojure状态调查!中分享您的想法。

欢迎!请查阅关于页面以了解更多关于Clojure问答页面的信息。

0
core.logic

这里的“具体化”是指,例如。

(run 1 [t] (== t <some-constant-to-be-reified>))

使用嵌套向量((link: ], [[]], [[[]])...)演示指数性能
https://www.refheap.com/1e30c198d528300fcba9ef24a

这是预期的,还是存在一个漏洞?我猜是前者,但希望是后者。如果这只是平常的事,请随意关闭并无需评论。 :)

2 答案

0

评论由:tomoj

附加补丁 0001-Walk-less.patch 可以使我得到(链接: https://www.refheap.com/39b990aed519346c2e41afcbe 文本:这个很好的结果)。它也使我的实际案例运行相当迅速(现在25ms,之前它跑得太久以至于我没见过它完成)。这是一大解脱!

问题不在于具体化,而是 walk-term。在补丁中,我试图避免执行一些似乎多余的操作。我希望大部分测试仍然通过是一个好的证据,表明它是多余的。

然而,补丁破坏了一些统一测试。我注意到,my refheap 测试'通过'为 bd65104ec3~,但失败为 bd65104ec3(LOGIC-69补丁)。似乎修复使统一器依赖于 walk-term 的当前行为。

我现在将继续使用我的修补版 ./checkouts 复制,因为我不用统一器。我可能会回来尝试修复它。

0
参考:https://clojure.atlassian.net/browse/LOGIC-166(由 tomoj 报告)
...