Pau*_*ers 6 format common-lisp
我有以下Common Lisp代码:
(defun micro-read-eval-print ()
(format t "Micro > ")
(let ((form (read-line)))))
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到以下内容:
CL-USER> (micro-read-eval-print)
(m-quote a)
Micro > NIL
Run Code Online (Sandbox Code Playgroud)
请注意,我输入"(m-quote a)",而Lisp解释器输出"Micro> NIL".
现在,我希望这些事件以相反的顺序发生.自格式声明出现以来,我本来期望首先打印"Micro>".为什么不先打印?我需要做些什么才能确保先打印?
Hea*_*utt 11
尝试添加
(defun micro-read-eval-print ()
(format t "Micro > ")
(finish-output)
(let ((form (read-line)))))
Run Code Online (Sandbox Code Playgroud)
我相信你正在遇到标准io(stdio)的缓冲,在C语言中,它通常被fflush()
用这种语言绕过.
finish-output
似乎是C标准库的Common Lisp等价物fflush
.