Emacs slime仅在调用的函数结束时打印my(format…)调用
我安装了emacs+sbcl+粘液。我定义了这个函数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
(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函数需要一些时间。