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
          (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)执行结束,以同时显示所有(format …)。我从终端(运行 sbcl(尝试了相同的方法,它运行良好,所以我想这与 emacs 或史莱姆有关。我该如何解决它?

Proksid的回答提到了force-output,这是在正确的轨道上,但实际上有一些相关的可能性。 force-output的文档还描述了finish-output(和clear-output,这与我们无关(:

完成输出输出和清晰输出练习控制 缓冲流输出的内部处理。

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

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

清除输出尝试中止 中任何未完成的输出操作 进展,以便尽可能少的产出继续 目的地。

如果您想保证不同迭代的输出不会交错(我不知道这是否可能(,您可能需要考虑finish-output而不是force-output。 无论哪种情况,至少要注意这两种选择。

在最后一次(格式(调用后添加(强制输出(。

相关内容

  • 没有找到相关文章

最新更新