我不明白为什么这段代码在不同的实现中表现不同:
在CLISP中,它的行为与预期相同,先打印提示符,然后读取输入,但在SBCL中,它是先读取,然后输出。我在网上看了一些资料并进行了更改:
(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的特殊性?
*query-io*
而不是 t 或 nil。 - lindes