1

这是该页面的链接:第 3 章,实用:一个简单的数据库。本质上,我有一个包含四个要显示的值的列表数据库。这是用

(defun dump-db ()
  (dolist (cd *db*)
    (format t "~{~a:~10t~a~%~}~%" cd)))

唯一的问题是输出不太正确:

TITLE:  Home
ARTIST:   Dixie Chicks
RATING:   9
RIPPED:   T
... (Shortened for brevity)

由于某种原因,“首页”没有从第 10 列开始,有人能告诉我为什么吗?我正在使用 SBCL 运行代码,最新版本。

4

2 回答 2

3

两件事情:

备注

0] 表示您处于调试循环中。离它远一点。help显示命令。

问题

也许这是 SBCL 的一个错误。您可能想在其邮件列表中讨论它。那会很有用。

我猜:

* (dump-db)
^^ <- 2 characters
TITLE:  Home
^^^^^^^^ <- 8 characters, 2 less than specified

如果您回到顶层,您会看到 SBCL 提示符是* - 两个字符长。现在您看到 的第一个缩进Home短了两个字符。所以 Lisp 打印机认为提示符的两个字符在同一行,然后位置 10 在接下来的八个字符上——比需要的少两个。也许 Lisp 打印机被 REPL 的某种编程方式弄糊涂了。接下来的几行就很好了。

顺便说一句,这不会发生在 LispWorks 或 Clozure CL 上。

于 2013-03-29T17:24:18.540 回答
0
0] (dump-db)    
TITLE:  Home
ARTIST:   Dixie Chicks
RATING:   9
RIPPED:   T

TITLE:    Fly
ARTIST:   Dixie Chicks
RATING:   8
RIPPED:   T

TITLE:    Roses
ARTIST:   Kethy Mattea
RATING:   7
RIPPED:   T


NIL
0] (dump-db)
TITLE:    Home
ARTIST:   Dixie Chicks
RATING:   9
RIPPED:   T

TITLE:    Fly
ARTIST:   Dixie Chicks
RATING:   8
RIPPED:   T

TITLE:    Roses
ARTIST:   Kethy Mattea
RATING:   7
RIPPED:   T


NIL
0] 

它似乎已经修复了......我不确定如何或为什么(我仍然希望回答的问题)。

于 2013-03-29T16:26:52.327 回答