Мой clojure repl начал выдавать ошибку «Глубина привязки переменной превышает максимальный размер спецификации», и меня бросили в отладчик.
В настоящее время я получаю доступ к слизи через clojure-jack-in и выполняю сокращение набора данных разумного размера. Немного поиска в Google приводит меня к выводу, что ошибка связана с тем, что я генерирую слишком много временных переменных, а именно:
Опция пользователя: max-specpdl-size
Эта переменная определяет ограничение на общее количество привязок локальных переменных и очисток защиты от раскручивания (см. Очистка от нелокальных выходов), которые разрешены до того, как Emacs сообщит об ошибке (с данными «Глубина привязки переменной превышает max-specpdl-size»).
Этот предел с соответствующей ошибкой при его превышении является одним из способов, с помощью которого Лисп избегает бесконечной рекурсии для плохо определенной функции. max-lisp-eval-depth обеспечивает еще одно ограничение на глубину вложенности. См. Эвал.
Значение по умолчанию — 1000. Вход в отладчик Лиспа увеличивает значение, если осталось мало места, чтобы убедиться, что у самого отладчика есть место для выполнения. здесь.
У меня мало опыта в отладке clojure-swank/slime, поэтому я надеюсь, что кто-то может помочь.
EDIT: я использую clojure-mode 1.11.4 с emacs 24 и clojure 1.3.0, я не устанавливал swank-clojure, я использую тот, который поставляется в комплекте с clojure-mode через clojure-jack-in, как я объяснял ранее.
swank-clojure
1.3.2
и1.3.3-SNAPSHOT
. - person toofarsideways   schedule 28.01.2012