printとreadにまつわるsbclのバグ

printで文字を表示した後にreadで入力を受け取ろうと思ったら、sbclが思ったタイミングでprintの内容を表示してくれなくて困った。

例えば以下のような単純な事ができない

(defun ask-name ()
  (print "What are you name?")
  (read))

そこで調べてみたら2010年ごろからこのようなバグ(?)を抱えているようです。
解決策はprintの代わりにprin1とterpriを使う事!
上の例はSBCLのために以下のように書いてやれば思ったようにいくようです。

(defun ask-name ()
  (prin1 "What are you name?")
 (terpri)
  (read))