プログラム内の式が循環リスト構造(circular list structure)を含む値を生成する場合は、Edebugがそれをプリントしようとしたときエラーとなるかもしれません。
循環構造への対処の1つとして、print-length
とprint-level
にプリントの切り詰めをセットする方法があります。Edebugは変数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
。
プリントをどのようにカスタマイズできるかに関する詳細は出力関数を参照してください。