什么格式实际打印在Common Lisp?

时间:2010-08-06 17:43:56

标签: format common-lisp

我有以下Common Lisp代码:

(defun micro-read-eval-print ()
    (format t "Micro > ")
    (let ((form (read-line)))))

当我运行它时,我得到以下内容:

CL-USER> (micro-read-eval-print)
(m-quote a)
Micro > NIL

请注意,我输入“(m-quote a)”,而Lisp解释器输出“Micro> NIL”。

现在,我原本预计这些事件会以相反的顺序发生。自格式声明出现以来,我原本预计会先打印“Micro>”。为什么不先打印?我需要做些什么才能确保首先打印出来?

1 个答案:

答案 0 :(得分:11)

尝试添加

(defun micro-read-eval-print ()
    (format t "Micro > ")
    (finish-output)
    (let ((form (read-line)))))

我相信你正在遇到标准io(stdio)的缓冲,在C语言中,它通常通过该语言中的fflush()被绕过。

finish-output似乎是C标准库fflush的Common Lisp等价物。