Clozure Common Lisp - DRIBBLE ничего не записывает в файл - PullRequest
0 голосов
/ 02 января 2019

Я использую Clozure Common Lisp в Windows. При использовании команды DRIBBLE и оценке некоторых простых форм с последующим закрытием потока DRIBBLE указанный файл создается, но в него ничего не записывается.

(DRIBBLE "test.log")
(+ 2 2)
(LIST 'a 'b 'c)
(DRIBBLE)

Это известное ограничение CCL в Windows или проблема с моей средой?

1 Ответ

0 голосов
/ 08 января 2019

Если вы посмотрите на исходный код dribble (в частности, process-dribble), вы увидите, что CCL перенаправляет поток *TERMINAL-IO* в двусторонний поток. Если вы попытаетесь записать напрямую в этот поток (и, возможно, после этого позвоните finish-output), тогда файл будет записан в.

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

Вариант использования Dribble, по крайней мере, реализованный в CCL (поведение Dribble практически не определено), должен использоваться с терминала, где вы не можете легко записать свой сеанс. В среде IDE, такой как Lispbox / Slime, существуют другие механизмы для хранения команд, например, буфер, в котором хранится текущий REPL.

...