% Function SET-PPRINT-DISPATCH
Function SET-PPRINT-DISPATCH
set-pprint-dispatch
type-specifier function
&optional
priority table => nil
type-specifier - 型指定子
function - 関数か、関数名か、nil
priority - 実数。デフォルトは0
。
table - pprint
ディスパッチテーブル。デフォルトは*print-pprint-dispatch*
の値。
tableで指定されたpprint
ディスパッチテーブルにエントリーを導入します。
type-specifierはエントリーのキーです。
set-pprint-dispatch
の最初の動作は、
type-specifierに関連付けられた
以前に存在していたエントリーを削除することです。
これにより、与えられたpprint
ディスパッチテーブル内において
同じ型指定子に関連付けられるエントリーが
2つになることがあり得ないことを保証します。
型指定子の同一性はequal
によってテストします。
pprint
ディスパッチテーブル内の各型指定子にには、
functionとpriorityの2つの値が 関連付けられます。
functionは2つの引数を受け付ける必要があり、
最初の引数は出力を送信するストリーム、
次の引数は印刷するオブジェクトです。
functionはオブジェクトをストリームへ
プリティプリントとして印刷とするべきです。
functionはオブジェクトが与えられたtype-specifierを
満たすと仮定することができます。
functionは*print-readably*
に従うべきです。
functionによって返却されるどんな値も無視されます。
priorityは、オブジェクトがひとつ以上のエントリーと マッチするような衝突を解決するための優先順位です。
functionはnil
であることが許されます。
このような状況においては、
set-pprint-dispatch
が返却されたあとは、
table内にtype-specifierのエントリーが無くなります。
なし。
なし。
なし。
priorityが実数ではないときは、エラーが発生します。
なし。
pprint
ディスパッチテーブルは
Lispコードのプリティプリンターを制御するときによく使用され、
次のような式のフォームによって示される型指定子が使われることが多いです。
(cons car-type cdr-type)
これは対応するオブジェクトがcons
のセルであり、
car
部はcar-typeという型指定子にマッチし、
cdr
部はcdr-typeという型指定子にマッチするようなことを意味しています。
cdr-typeは省略することができ、
そのような場合はデフォルトではt
になります。