Function WRITE-TO-STRING, PRIN1-TO-STRING, PRINC-TO-STRING
write-to-string object &key array base case circle escape gensym length level lines miser-width pprint-dispatch pretty radix readably right-margin => string
prin1-to-string object => string
princ-to-string object => string
object - オブジェクト
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
string - 文字列
write-to-string, prin1-to-string, princ-to-stringは、 objectの印刷表現を含む文字列を生成するときに使用されます。 objectは、それぞれwrite, prin1, princによるものとして 効率的に印刷され、 出力の文字が文字列の中に作成されます。
write-to-stringは一般的な出力関数です。 これは指定されたすべてのパラメーターを適切に扱い objectを印刷する能力があります。
prin1-to-stringは、 write-to-stringに:escape tを付与したように動作し、 これはエスケープ文字が適切な場所に記載されることを意味しています。
princ-to-stringは、 write-to-stringに:escape nil :readably nilを付与したように動作します。 したがってエスケープ文字は記載されません。
prin1-to-stringかprinc-to-stringが実行されたとき、 他の全てのキーワードは write-to-stringに指定されたもののデフォルト値になります。
この意味は、write-to-stringのキーワード引数のデフォルトは、 writeのものと同じであるということです。
(prin1-to-string "abc") =>  "\"abc\""
(princ-to-string "abc") =>  "abc"なし。
*print-escape*, *print-radix*, *print-base*, *print-circle*, *print-pretty*, *print-level*, *print-length*, *print-case*, *print-gensym*, *print-array*, *read-default-float-format*
なし。
(write-to-string object {key argument}*)
==  (with-output-to-string (#1=#:string-stream) 
      (write object :stream #1# {key argument}*))
(princ-to-string object)
==  (with-output-to-string (string-stream)
      (princ object string-stream))
(prin1-to-string object)
==  (with-output-to-string (string-stream)
      (prin1 object string-stream))