Printing SBCL切换打印和读取顺序(lisp)

Printing SBCL切换打印和读取顺序(lisp),printing,lisp,sbcl,Printing,Lisp,Sbcl,我还在学习lisp,所以,当我遇到这个问题时,我很困惑。 我有一个简单的函数,我想先打印,然后读取输入: (defun ask() (princ '?) (read)) 所以,当我用CLISP运行这个程序时,它显示了预期的结果,它打印了?,然后,在同一行上,我可以将输入写入read函数 当我和SBCL一起运行时,它出错了。首先询问输入,然后打印?。我想这可能是因为我没有新线,但我真的很想知道如何在SBCL的同一条线上实现这一点。此外,我想知道为什么CLISP中的结果是正确的,而SB

我还在学习lisp,所以,当我遇到这个问题时,我很困惑。 我有一个简单的函数,我想先打印,然后读取输入:

(defun ask()
   (princ '?)
   (read))
所以,当我用CLISP运行这个程序时,它显示了预期的结果,它打印了?,然后,在同一行上,我可以将输入写入read函数

当我和SBCL一起运行时,它出错了。首先询问输入,然后打印?。我想这可能是因为我没有新线,但我真的很想知道如何在SBCL的同一条线上实现这一点。此外,我想知道为什么CLISP中的结果是正确的,而SBCL中的结果不是。
提前感谢您的帮助。

对我来说,它以正确的顺序工作,但也许您的案例可以与SBCL执行的输出缓冲连接。您可以在
princ
之后添加
(finish output)
,以确保在调用
read
之前完成打印