lisp - READ 在 FORMAT 之前运行

标签 lisp common-lisp sbcl slime

在 SLIME 中运行它并想知道为什么它在输出 format 之前等待 read 输入。

(defun wage ()
  (format t "~&Enter wage: ")
  (let ((wage (read)))
    (format t "~&Enter hours: ")
    (let ((hours (read)))
      (format t "~&Earned ~S dollars." (* wage hours)))))

* (wage)

2
Enter wage: 
3
Enter hours: 
Earned 6 dollars.
NIL

最佳答案

发生这种情况是因为标准输出流是缓冲的,这意味着打印到它的东西实际上不会立即写入显示器。您需要在每个实例中的 (read) 之前调用 (finish-output) 以确保首先写入缓冲的任何内容。

关于lisp - READ 在 FORMAT 之前运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20157679/

相关文章:

f# - F# 中的非类型化/类型化代码引用与宏卫生之间是否存在关系?

lisp - Common-LISP Print 函数本身

concurrency - 如何将当前线程的绑定(bind)传递给另一个线程?

sbcl - 如何确定可执行转储的位置

lisp - 复制时如何更新实体的扩展数据信息

lisp 做循环阶乘代码

macros - Common Lisp 中的宏在编译时是否完全展开?

lisp - 在没有引用运算符的 LISP 中输入参数(属性列表/语义网络/基本函数)

macros - Lisp SBCL 宏引用列表作为参数

stream - 在 Common Lisp 中读取外部程序的二进制输出