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
になります。