Local-Macro PPRINT-POP

UP


Local-Macro PPRINT-POP

Local Macro PPRINT-POP

構文

pprint-pop <引数なし> => object

引数と戻り値

object - レキシカルな現在の論理ブロック内における 印刷されるリストの要素か、nil

定義

レキシカルな現在の論理ブロック内における印刷されるリストの要素のひとつをpopし、 下記に定義に従い*print-length**print-circle*を処理します。

pprint-popが呼び出されるたびに、 レキシカルな現在の論理ブロックへ通されたリストの次の値をpopし、 その値を返却します。 しかし、実行する前に下記の3つのテストを行います。

もし上記3つの状態のどれかが生じたとき、 指示された出力が 直前に含まれるpprint-logical-blockによって生成された プリティプリントのストリームへ出力され、 直前に含まれるpprint-logical-blockの実行は サフィックスの出力を除いて終了されます。

もしpprint-logical-blockが 引数のlistnilを与えられたとき、 リストの処理はできませんが、 pprint-popはまだ*print-length*の サポートを得るために使うことができます。 このような状況では、 上記の最初のテストと3つめのテストは実施できず、 pprint-popは常にnilを返却します。 22.2.2. プリティプリンターの使用例の、特にpprint-vectorの例をご確認ください

グローバル環境においてpprint-popfboundかどうかは 実装依存です。 しかし、グローバル環境でfboundにある COMMON-LISPパッケージ内のpprint-popと同じシンボルを 再定義したりシャドウすることは制限されています。 pprint-logical-blockの外側で pprint-popを使用しようとしたときの結果は未定義です。

例文

なし。

副作用

現在の論理ブロックにレキシカルで関連づいたプリティプリントのストリームへ 出力が生じるかもしれません。

影響

*print-length*, *print-circle*

例外

pprint-logical-blockフォームのレキシカルではない場所で pprint-popが使用されたときは、 (マクロ展開時か実行時かのどちらかで)エラーが発生します。

pprint-popが、pprint-logical-blockの 動的エクステントの外側で実行されたときの結果は未定義です。

参考

pprint-exit-if-list-exhausted, pprint-logical-block

備考

pprint-popを呼び出す前に pprint-exit-if-list-exhaustedを呼ぶという状況は 頻繁にあります。


TOP, Github