我在 Windows 上使用 Clozure Common Lisp。当使用DRIBBLE
命令并评估一些简单的形式然后关闭DRIBBLE
流时,会创建一个指定的文件,但没有任何内容写入其中。
(DRIBBLE "test.log")
(+ 2 2)
(LIST 'a 'b 'c)
(DRIBBLE)
这是 Windows 上 CCL 的已知限制还是我的环境有问题?
我在 Windows 上使用 Clozure Common Lisp。当使用DRIBBLE
命令并评估一些简单的形式然后关闭DRIBBLE
流时,会创建一个指定的文件,但没有任何内容写入其中。
(DRIBBLE "test.log")
(+ 2 2)
(LIST 'a 'b 'c)
(DRIBBLE)
这是 Windows 上 CCL 的已知限制还是我的环境有问题?
如果您查看dribble
(特别是process-dribble
)的源代码,您可以看到 CCL 将*TERMINAL-IO*
流重定向到双向流。如果您尝试直接写入该流(并且可能finish-output
在之后调用,可以肯定),那么该文件将被写入。
> (dribble "/tmp/log")
> (print "test" *terminal-io*)
> (dribble)
dribble 的用例,至少在 CCL 中实现(实际上未指定 dribble 的行为),将从终端使用,您无法轻松记录会话。在像 Lispbox/Slime 这样的 IDE 下,还有其他机制来存储命令,例如保存当前 REPL 的缓冲区。