Common Lisp の print

Common Lisp の print は表示したオブジェクトをそのまま返すらしい。id:g000001 さんに教えてもらった。

(and hoge hige)

の print デバッグ

(and (print hoge) hige)

と書ける。面白い。
ちなみに Scheme の display は未定義値を返す仕様。

追記

多値にも対応した print を Mosh の標準ライブラリに追加してみた。

(define-syntax p
  (lambda (x)
    (syntax-case x ()
      [(_ obj)
       #'(call-with-values (lambda () obj) (lambda x (display x) (newline) (apply values x)))])))