CLOS インスタンスの表示を制御する

良く忘れるのでメモ。

Common Lisp には、 print-object という generic function が定義されている。自分で定義したクラスのインスタンスの表示を制御したい場合は、このメソッドを書き換えれば良い。この機能をうまく使えば、結果表示のためにわざわざ print-foo みたいな関数を作らずにすむ。


その際、 write して read したらもとに戻らないインスタンスのためには、 print-unreadable-object マクロを使うとよい。

"Practical Common Lisp", chapter 23, p.294 参照。