いくつかの format および princ 呼び出しの動作は次のとおりです。
(format nil "a")
"a"
CL-USER>
(format t "a")
a
NIL
CL-USER>
(princ "a" nil)
a
"a"
CL-USER>
(princ "a" t)
a
"a"
CL-USER>
(princ "a" nil)
呼び出しは「a」を返し、「a」を stdout に出力せず、「a」を stdout に出力すると思っていました。また、最初と 2 番目の princ 呼び出しに違いがない理由もわかりません。
hyperspec を閲覧してみましたが、必要な情報が見つかりません。
私の誤解は、nil
とt
がストリームではないためだと思いますが、フォーマットはそれらを戻りストリーム (それが何であれ) と stdout に変換します。その場合、どうすれば(format nil ...)
効果を得ることができますか(princ ... ?)