このコードが実装ごとに異なる動作をする理由がわかりません。
(format t "asdf")
(setq var (read))
CLISPでは、プロンプトが出力されてから読み取りが続くという期待どおりに動作しますが、SBCLでは、読み取りを行ってから出力します。私はインターネットで少し読んでそれを変更しました:
(format t "asdf")
(force-output t)
(setq var (read))
これも、CLISPでは正常に機能しますが、SBCLでは、読み取りを行ってから出力します。私はそれを別の関数に分離しようとさえしました:
(defun output (string)
(format t string)
(force-output t))
(output "asdf")
(setq var (read))
そして、それはまだ読み取り、そして出力します。私はforce-output
正しく使用していませんか、それともこれはSBCLの特異性ですか?