プログラム内の式が循環リスト構造を含む値を生成した場合、Edebugがそれを出力しようとした際にエラーが発生することがあります。
循環構造に対処する方法の一つは、print-length または print-level を設定して出力を切り詰めることです。Edebug はこの処理を自動で行い、print-length と print-level を変数
edebug-print-length と edebug-print-level の値にバインドします(ただし、それらが nil 以外の値である場合に限ります)。出力に影響を与える変数 を参照してください。
nil 以外の場合、Edebug は結果の出力時に print-length をこの値にバインドします。デフォルト値は 50 です。
nil 以外の場合、Edebug は結果の出力時に print-level をこの値にバインドします。デフォルト値は 50 です。
また、print-circle を nil
以外の値にバインドすることで、円形構造や要素を共有する構造をより分かりやすく出力することもできます。
円形構造を作成するコードの例を以下に示します。
(setq a (list 'x 'y)) (setcar a a)
print-circle が nil
でない場合、出力関数(例:prin1)は a を
‘#1=(#1# y)’ として出力します。‘#1=’ という表記は、それに続く構造に ‘1’ というラベルを付与し、‘#1#’
という表記は、先にラベル付けされた構造を参照します。この表記は、リストやベクトルの共通要素に対して使用されます。
nil 以外の場合、Edebug は結果の出力時に print-circle をこの値にバインドします。デフォルト値は t です。
印刷のカスタマイズ方法の詳細については、出力関数を参照してください。