【问题标题】:SBCL Switches print and read order (lisp)SBCL 切换打印和读取顺序 (lisp)
【发布时间】:2011-12-02 17:43:56
【问题描述】:

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

(defun ask()
   (princ '?)
   (read))

所以,当我用 CLISP 运行它时,它显示了预期的结果,它打印了 ?,然后,在同一行,我可以将输入写入 read 函数。

当我用 SBCL 运行它时,它出错了。首先询问我的输入,然后打印 ?。我想这可能是因为我没有制作换行符,但我真的很想知道如何在 SBCL 的同一行中进行这项工作。另外,我想知道为什么 CLISP 中的结果是正确的,而 SBCL 中的结果却不是。 提前感谢您的帮助。

【问题讨论】:

    标签: printing lisp sbcl


    【解决方案1】:

    它对我来说按正确的顺序工作,但也许你的情况可以与输出缓冲有关,由 SBCL 执行。您可以在princ 之后添加(finish-output) 以保证在调用read 之前完成打印。

    【讨论】:

      【解决方案2】:

      对于那些偶然发现这一点的人,我发现当我从 emacs shell 中运行 sbcl 时,打印/读取语句似乎更经常出现故障。但是,如果我从 gnome 终端中运行我的代码,它似乎大部分时间都能正确输出。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-10
        • 2011-08-19
        • 2012-03-05
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多