prin1、princ、print の違いについて

Common Lisp には出力に使用される関数が複数存在します。今回はそれぞれの個性について自分なりに調べた結果を書いていきます。

  1. prin1
    read 関数に使用しやすいフォーマットとは、上記のように文字列を出力することです。人が読みやすいフォーマットで出力するには次の princ 関数を使用します。
  2. princ
    princ 関数は人の読みやすい形式で表示します。読みやすい形式とは、#\newline、#\space、#\tabなどのエスケープ文字を解釈して表示することです。 prin1 関数とは違い、princでは#\spaceが" "と解釈されてます。
  3. print
    print 関数は prin1 関数の出力の最初に改行を加えて、最後にスペースを加えたものです。

上記の関数は全て write 関数を使用してオブジェクトをストリームに書き込んでいます。 キーワードパラメータを使用することで prin1、princ、printを再現することが可能できます。

参考
CLHS: Function WRITE, PRIN1, PRINT, PPRINT...
lisp - What's the difference between write, print, pprint, princ, and prin1? - Stack Overflow