% Function WRITE, PRIN1, PRINT, PPRINT, PRINC
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)