Emacs slime仅在调用的函数结束时打印my(format…)调用

Emacs slime仅在调用的函数结束时打印my(format…)调用,emacs,common-lisp,flush,sbcl,slime,Emacs,Common Lisp,Flush,Sbcl,Slime,我安装了emacs+sbcl+粘液。我定义了这个函数 (defun jugar () (let* ((nodoActual *nodo-inicial*) (estadoActual (nodo-estado nodoActual)) (timeStart nil) (timeEnd nil) ) (loop while (not (es-estado-final estadoActual)) do

我安装了emacs+sbcl+粘液。我定义了这个函数

(defun jugar ()
  (let* ((nodoActual *nodo-inicial*)
         (estadoActual (nodo-estado nodoActual))
         (timeStart nil)
         (timeEnd nil)
         )
    (loop while (not (es-estado-final estadoActual)) do
          (setf *hojas* 0)
          (setf timeStart (get-universal-time))
          (setf nodoActual (decision-minimax nodoActual *profundidad* timeStart))
          (setf timeEnd (get-universal-time))
          (setf estadoActual (nodo-estado nodoActual))
          (imprime-en-fichero estadoActual)
          (format t "Hojas analizadas:     ~a  ~%" *hojas*)
          (format t "Tiempo empleado:     ~a  ~%~%" time))   
    ))
它进行一系列调用并在循环中打印一些变量

问题是,当我从
*slime repl sbcl*
缓冲区调用
(jugar)
时,提示将等待
(jugar)
执行结束,以便同时显示所有
(格式…
。我在一个终端(运行sbcl)上尝试了同样的方法,效果很好,所以我猜这与emacs或slime有关。如何修复它?

在上次(格式化)调用之后添加(强制输出)。

提到了
强制输出,这是正确的,但实际上有一些相关的可能性。还描述了
完成输出
(和
清除输出
,这与我们无关):

完成输出力量输出,和清除输出控制 缓冲流输出的内部处理

完成输出尝试确保将任何缓冲输出发送到 输出流已到达其目标,然后返回

强制输出启动清空任何内部缓冲区,但不会 不要等待完成或确认返回

清除输出尝试中止中任何未完成的输出操作 为了让尽可能少的产出继续增长而取得的进展 目的地


如果您想保证不同迭代的输出没有交错(我不知道这是否可能),您可能需要考虑<代码>完成输出< /代码>,而不是<代码>强制输出< /代码>。在任何一种情况下,至少要注意这两个选项。

我怀疑这是因为输出连接到管道时存在缓冲。如何修复它以“动态”显示格式?谢谢!(力输出)是解决方案。现在它应该是这样的:)@gosku如果peroksid的答案对你有用,你应该让别人知道它对你有用,减少未回答问题的数量,也给peroksid(和你自己)一点声誉。谢谢你的帮助。(力输出)足够了,因为minimax函数需要一些时间。