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
by

评论由:austinhaas

我已经看不到这个问题了,但我在报告时使用的是Java 1.6,现在我使用的是

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

0
by

评论由:dnolen

好的,谢谢您的快速回复,我将再次检查使用Java 1.6时的事态。

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