我不明白为什么这段代码在不同的实现中表现不同:
(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 的特性?