Function PPRINT-FILL, PPRINT-LINEAR, PPRINT-TABULAR

UP


Function PPRINT-FILL, PPRINT-LINEAR, PPRINT-TABULAR

Function PPRINT-FILL, PPRINT-LINEAR, PPRINT-TABULAR

構文

pprint-fill stream object &optional colon-p at-sign-p => nil
pprint-linear stream object &optional colon-p at-sign-p => nil
pprint-tabular stream object &optional colon-p at-sign-p tabsize => nil

引数と戻り値

stream - 出力ストリーム指定子
object - オブジェクト
colon-p - generalized-boolean。デフォルトはtrue
at-sign-p - generalized-boolean。デフォルトは実装依存。
tabsize - 非負の整数。デフォルトは16

定義

pprint-fill, pprint-linear, pprint-tabularの関数は、 streamに対してリストをどのように プリティプリントとして出力するか特定の方法を指定します。 colon-ptrueのときは、 各関数は出力の周りを囲うようにカッコを出力します。 各関数は、at-sign-pの引数を無視します。 (両方の引数が、ひとつの引数しか必要ないにもかかわらず含まれるのは、 ~/.../を経由して使用される関数や、 set-pprint-dispatch関数によって直接使われるからです) 各関数は省略形を扱い、循環構造を検出し、 共有構造を正しく検出し、 そしてリストではないものが指定されたときは writeを使用してobjectを印字します。

objectがリストであり、 *print-pretty*の値がfalseのときは、 これらの関数はobjectを出力する際に 22.1.3.5. リストとコンスの印字の定義に従い最小の空白を使用します。 それ以外のときは (objectがリストであり、*print-pretty*の値がtrueのとき)、 次のように出力します。

例文

一行の長さが25のときの 下記が評価されたときの出力を示します。

(progn (princ "Roads ") 
       (pprint-tabular *standard-output* '(elm main maple center) nil nil 8))
Roads ELM     MAIN
      MAPLE   CENTER

副作用

指定したストリームに出力されます。

影響

もし決定できるならば、指定したストリームのカーソルの位置。

例外

なし。

参考

なし。

備考

関数pprint-tabularは次のように定義できます。

(defun pprint-tabular (s list &optional (colon-p t) at-sign-p (tabsize nil))
  (declare (ignore at-sign-p))
  (when (null tabsize) (setq tabsize 16))
  (pprint-logical-block (s list :prefix (if colon-p "(" "")
                                :suffix (if colon-p ")" ""))
    (pprint-exit-if-list-exhausted)
    (loop (write (pprint-pop) :stream s)
          (pprint-exit-if-list-exhausted)
          (write-char #\Space s)
          (pprint-tab :section-relative 0 tabsize s)
          (pprint-newline :fill s))))

これはformatを使用して この関数を定義するには不便であることに注意してください。 なぜならリストの繰り返し内にあるformatの命令~:Ttabsize引数を渡す必要があるためです。


TOP, Github