Variable *PRINT-CIRCLE*

UP


Variable *PRINT-CIRCLE*

Variable *PRINT-CIRCLE*

値の型

generalized-boolean

初期値

false

定義

印刷を行うオブジェクトの 循環と共有を検出するかどうかを制御します。

もし値がfalseのとき、 印刷の処理は、循環と共有の検出をすることなく 再帰的に降下していくことによって行います。

もし値がtrueのとき、 プリンターは構造を印刷する中で 循環と共有を検出するよう努力し、 循環か共有の要素を示す#n=#n#構文を使用します。 もしユーザーが定義したprint-objectメソッドが 提供されたストリーム以外に印刷するとき、 循環の検出はそのストリームに対してやり直しされます。

Lispリーダーが自動的にオブジェクトの共有の保証を行うときは (例えば内部シンボルに生じたときなど)、 実装は#n#表記を使用するべきではないことに注意してください。

例文

(let ((a (list 1 2 3)))
  (setf (cdddr a) a)
  (let ((*print-circle* t))
    (write a)
    :done))
>>  #1=(1 2 3 . #1#)
=>  :DONE

影響

なし。

参考

write

備考

*print-circle*nilがされた状態で 循環構造を印刷しようとしたときは、 おそらくループの状態を引き起こし、 終了できない状態になります。


TOP, Github