Function WRITE
, PRIN1
, PRINT
, PPRINT
, PRINC
write
object &key
array base case circle escape gensym length level lines miser-width pprint-dispatch pretty radix readably right-margin stream => object
prin1
object &optional
output-stream => object
princ
object &optional
output-stream => object
print
object &optional
output-stream => object
pprint
object &optional
output-stream => <返却値なし>
object - オブジェクト
output-stream - 出力ストリーム指定子。デフォルトは標準出力。
array - generalized-boolean
base - 基数
case - 型(member :upcase :downcase :capitalize)
のシンボル
circle - generalized-boolean
escape - generalized-boolean
gensym - generalized-boolean
length - 非負の整数か、nil
level - 非負の整数か、nil
lines - 非負の整数か、nil
miser-width - 非負の整数か、nil
pprint-dispatch - pprint
ディスパッチテーブル
pretty - generalized-boolean
radix - generalized-boolean
readably - generalized-boolean
right-margin - 非負の整数か、nil
stream - 出力ストリーム指定子。デフォルトは標準出力。
write
, prin1
, princ
, print
, pprint
は、 objectの印刷表現をoutput-streamに書き込みます。
write
は、Lispプリンターの一般的な入り口です。 次の表で示されるような名前のキーワードパラメーターが明に指定されたとき、 印刷が実行されている間はそれらの値が対応する プリンター制御変数に動的に束縛されます。 次の表で示されるような名前のキーワードパラメーターが明に指定されなかったとき、 対応するプリンター制御変数の値は write
が実行された時点でのものと同じになります。 いちど適切な束縛が確立されたら、 オブジェクトはLispプリンターによって出力されます。
パラメーター | 対応する動的変数 |
---|---|
array | *print-array* |
base | *print-base* |
case | *print-case* |
circle | *print-circle* |
escape | *print-escape* |
gensym | *print-gensym* |
length | *print-length* |
level | *print-level* |
lines | *print-lines* |
miser-width | *print-miser-width* |
pprint-dispatch | *print-pprint-dispatch* |
pretty | *print-pretty* |
radix | *print-radix* |
readably | *print-readably* |
right-margin | *print-right-margin* |
Figure 22-7. WRITE
関数の引数の対応
prin1
, princ
, print
, pprint
は、 特定の印刷パラメーターを特定の値に暗に束縛します。 残りのパラメーターの値は、 *print-array*
, *print-base*
, *print-case*
, *print-circle*
, *print-escape*
, *print-gensym*
, *print-length*
, *print-level*
, *print-lines*
, *print-miser-width*
, *print-pprint-dispatch*
, *print-pretty*
, *print-radix*
, *print-right-margin*
から取得します。
prin1
は、read
からの入力に適切な出力を生成します。 それは*print-escape*
をtrueに束縛します。
princ
は、ちょうどprin1
と似ていますが、 出力にエスケープ文字を含めない所が違っています。 *print-escape*
をfalseに、 *print-readably*
をfalseに束縛します。 一般的なルールは、 princ
による出力は人に見やすいことを意図しており、 prin1
による出力はread
に受け入れられることを意図しています。
print
は、ちょうどprin1
に似ていますが、 objectの印刷表現の前に改行を、 その後にスペースを入れるところが違っています。
pprint
は、ちょうどprint
に似ていますが、 末尾の空白が省略され、かつobjectを印刷するときに *print-pretty*
にnil
以外の値を指定し、 プリティプリントの出力を行うということが違っています。
output-streamは出力を送信するストリームを指定します。
*standard-output*
, *terminal-io*
, *print-escape*
, *print-radix*
, *print-base*
, *print-circle*
, *print-pretty*
, *print-level*
, *print-length*
, *print-case*
, *print-gensym*
, *print-array*
, *read-default-float-format*
なし。
readtable-case
, 22.3.4. FORMAT
プリンター操作
関数のprin1
とprint
は、 *print-readably*
を束縛しません。
prin1 object output-stream)
(write object :stream output-stream :escape t)
== (
princ object output-stream)
(write object stream output-stream :escape nil :readably nil)
== (
print object output-stream)
(progn (terpri output-stream)
== (write object :stream output-stream
(:escape t)
write-char #\space output-stream))
(
pprint object output-stream)
(write object :stream output-stream :escape t :pretty t) == (