填写您的想法吧!2024 年Clojure现状调查!

欢迎!有关此如何工作的更多信息,请参阅关于页面。

0
core.logic

`
(ns test
(:refer-clojure :exclude [==])
(:require
[clojure.core.logic :refer :all]))

(defn foo [in out]
(matcha
[in out]
([('and a b . ()) ('and x y . ())] (foo a x) (foo b y))
([a ('bar ('baz a . ()) . ())])))

;; 使用以下代码,我得到了堆栈溢出,但如果删除一个连接项,它就会运行。

(run 1 [q] (foo

        '(and p
              (and p
                   (and p
                        (and p
                             (and p
                                  (and p
                                       (and p
                                            (and p
                                                 (and p
                                                      (and p
                                                           (and p p)))))))))))
        q))

`

6 答案

0

由:dnolen

看起来即使你将matcha与matche交换,这个问题仍然存在

0

由:austinhaas

我认为重整化期间发生了溢出。

我在从run返回结果时得到这个错误,但现在我将与另一个目标相同的值作为输入,就没有溢出了。

如果您将foo调用中的q替换为新鲜变量,它将不会溢出。

0

由:dnolen

这对我来说在master上有效。你能给我更多关于你设置的具体信息,这样我就可以尝试重建?我在OS X 10.8上运行JDK 7 64位。

0

由:austinhaas

我再也不看到这个问题了,但我相信我在报告时使用的是 Java 1.6,现在我使用的是

$ java -version
java 版本 "1.7.0_15"
Java TM SE 运行时环境(构建 1.7.0_15-b03)
Java HotSpot TM 64 位服务器虚拟机(构建 23.7-b01,混合模式)

0

由:dnolen

好的,感谢您迅速回应,我将再次检查在1.6下情况如何。

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