我的Clojure REPL开始抛出“变量绑定深度超过max-specpdl-size”错误,我被扔进了调试器。
我目前通过clojure-jack-in访问slime,并在一个合理大小的数据集上执行reduce操作。一些谷歌搜索让我相信这个错误是因为我生成了太多的临时变量,具体来说是:
用户选项:max-specpdl-size 此变量定义了允许 Emacs 在发出错误(使用数据“Variable binding depth exceeds max-specpdl-size”)之前允许的局部变量绑定和解除保护清理(请参阅从非本地退出清理)的总数限制。 此限制及其关联的错误超过了无法定义函数的无限递归的一种方式。max-lisp-eval-depth提供了另一个嵌套深度的限制。请参见Eval。 默认值为1000。如果剩余空间很少,则进入Lisp调试器会增加该值,以确保调试器本身有足够的空间来执行。 在此处找到。 我对调试Clojure-Swank/Slime没有太多经验,希望有人能帮忙。
编辑: 我正在使用Emacs 24和Clojure 1.3.0的Clojure-mode 1.11.4,我没有安装Swank-Clojure,我正在使用通过Clojure-jack-in捆绑在Clojure-mode中的那个。
我目前通过clojure-jack-in访问slime,并在一个合理大小的数据集上执行reduce操作。一些谷歌搜索让我相信这个错误是因为我生成了太多的临时变量,具体来说是:
用户选项:max-specpdl-size 此变量定义了允许 Emacs 在发出错误(使用数据“Variable binding depth exceeds max-specpdl-size”)之前允许的局部变量绑定和解除保护清理(请参阅从非本地退出清理)的总数限制。 此限制及其关联的错误超过了无法定义函数的无限递归的一种方式。max-lisp-eval-depth提供了另一个嵌套深度的限制。请参见Eval。 默认值为1000。如果剩余空间很少,则进入Lisp调试器会增加该值,以确保调试器本身有足够的空间来执行。 在此处找到。 我对调试Clojure-Swank/Slime没有太多经验,希望有人能帮忙。
编辑: 我正在使用Emacs 24和Clojure 1.3.0的Clojure-mode 1.11.4,我没有安装Swank-Clojure,我正在使用通过Clojure-jack-in捆绑在Clojure-mode中的那个。
swank-clojure
1.3.2
和1.3.3-SNAPSHOT
两个版本。 - toofarsideways