READ在FORMAT之前运行

时间:2013-11-23 02:10:56

标签: lisp common-lisp sbcl slime

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

(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

1 个答案:

答案 0 :(得分:3)

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