Clozure Common Lisp-DRIBBLE不向文件写入任何内容

时间:2019-01-02 20:52:04

标签: ccl clozure-cl

我在Windows上使用Clozure Common Lisp。使用//Make sure to add System.IO namespace, if not already present: //using System.IO; var file = new File.ReadLines("C:\Path\To\File.txt"); var firstLine = file.FirstOrDefault(); 命令并评估一些简单的形式,然后关闭DRIBBLE流时,将创建一个指定的文件,但不写入任何内容。

DRIBBLE

这是Windows上CCL的已知限制还是我的环境有问题?

1 个答案:

答案 0 :(得分:1)

如果查看dribble(特别是process-dribble)的源代码,您会发现CCL将*TERMINAL-IO*流重定向到双向流。如果您尝试直接写入该流(当然可以在之后调用finish-output,那么该文件将被写入。

> (dribble "/tmp/log")
> (print "test" *terminal-io*)
> (dribble)

运球的用例,至少在CCL中已实现(运球的行为实际上是未指定的),将在无法轻松记录会话的终端上使用。在像Lispbox / Slime这样的IDE下,还有其他存储命令的机制,例如保存当前REPL的缓冲区。