3

clojure repl が「変数バインディングの深さが max-specpdl-size を超えています」というエラーをスローし始め、デバッガーにスローされました。

私は現在、clojure-jack-in 経由でスライムにアクセスしており、適切なサイズのデータ​​セットで削減を実行しています。少しグーグルで調べてみると、エラーは一時変数を生成しすぎていることが原因であると思われます。具体的には次のとおりです。

ユーザー オプション: max-specpdl-size

この変数は、Emacsがエラーを通知する前に許可されるローカル変数バインディングとアンワインド保護クリーンアップ(非ローカル出口からのクリーンアップを参照)の合計数の制限を定義します(データ「変数バインディングの深さがmax-specpdl-sizeを超えています」)。

この制限と、それを超えると関連するエラーは、Lisp が不適切に定義された関数での無限再帰を回避する 1 つの方法です。max-lisp-eval-depth は、ネストの深さに関する別の制限を提供します。評価を参照してください。

デフォルト値は 1000 です。Lisp デバッガーに入ると、デバッガー自体が実行する余地があることを確認するために、残りの余地がほとんどない場合は値が増加します。 ここにあります

私は clojure-swank/slime のデバッグ経験がほとんどないので、誰かが助けてくれることを願っています。

EDIT: 私はemacs 24とclojure 1.3.0でclojure-mode 1.11.4を使用しています.swank-clojureをインストールしていません.clojure-jack-in経由でclojure-modeにバンドルされているものを使用しています.先ほど説明しました。

4

1 に答える 1