为什么 dribble 生成一个空文件?

Why is dribble producing an empty file?

我正在尝试通过 Common Lisp:对符号计算的简单介绍 来学习 Common Lisp。此外,我正在使用 SBCL、Emacs 和 Slime。

在第 9 章末尾,作者展示了 运球 工具。 他展示了以下内容:

我试图重现作者提供的命令。考虑到输入,唯一的区别是我将文件保存在不同的位置。在我的环境中,我做了:

CL-USER> (dribble "/home/pedro/miscellaneous/misc/symbolic-computation/teste-tool.log")
; No value
CL-USER> (cons 2 nil)
(2)
CL-USER> '(is driblle really working?)
(IS DRIBLLE REALLY WORKING?)
CL-USER> "is dribble useful at all?"
"is dribble useful at all?"
CL-USER> (dribble)
; No value

确实创建了文件:

$ readlink -f teste-tool.log 
/home/pedro/miscellaneous/misc/symbolic-computation/teste-tool.log

请注意,我在打字时没有在 REPL 中收到诸如“正在记录文件 --location---”之类的消息。但这可能会因 Lisp 实现而异。

令人大吃一惊的是,不幸的是,该文件是空的。因此,运球没有达到预期效果。

我是不是做错了什么?

  1. 是的,默认情况下,在 Slime 中我认为这不起作用。

  2. 在 SBCL Repl 中工作:

➜ sbcl
This is SBCL 2.0.1.debian, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* (dribble "dribble-test.lisp")
* (* 8 5)

40
* "Will this work?"

"Will this work?"
* (dribble)

* %

可以确认的是:

➜ cat dribble-test.lisp
* (* 8 5)

40
* "Will this work?"

"Will this work?"
* (dribble)
  1. 保存“REPL 历史记录”似乎对 Slime IMO 没那么有用,因为你所做的所有“非 REPL 评估”,例如选择函数或表达式或区域并在 REPL 中对其进行评估。

  2. 实际 在 Slime 中保存和查看历史记录,请参阅 slime-repl-save-history 和相关功能;如果您愿意,您甚至可以 合并来自独立回复的历史记录 :-)