Clozure Common Lisp - DRIBBLE ничего не записывает в файл
Я использую Clozure Common Lisp в Windows. При использовании DRIBBLE
команды и оценки некоторых простых форм с последующим закрытием DRIBBLE
поток, указанный файл создан, но в него ничего не записано.
(DRIBBLE "test.log")
(+ 2 2)
(LIST 'a 'b 'c)
(DRIBBLE)
Это известное ограничение CCL в Windows или проблема с моей средой?
1 ответ
Если вы посмотрите на исходный код для dribble
(особенно, process-dribble
), вы можете видеть, что CCL перенаправляет *TERMINAL-IO*
поток в двусторонний поток. Если вы попытаетесь написать прямо в этот поток (и, возможно, вызов finish-output
после, чтобы быть уверенным), то файл будет записан.
> (dribble "/tmp/log")
> (print "test" *terminal-io*)
> (dribble)
Вариант использования для Dribble, по крайней мере, реализованный в CCL (поведение Dribble практически не определено), должен использоваться из терминала, где вы не можете легко записать свой сеанс. В среде IDE, такой как Lispbox/Slime, существуют другие механизмы для хранения команд, например, буфер, в котором хранится текущий REPL.