以下是该页面的链接:Chapter 3, Practical: A Simple Database。 基本上我有一个列表数据库,其中包含我想要显示的四个值。这是通过
完成的(defun dump-db ()
(dolist (cd *db*)
(format t "~{~a:~10t~a~%~}~%" cd)))
唯一的问题是输出不太正确:
TITLE: Home
ARTIST: Dixie Chicks
RATING: 9
RIPPED: T
... (Shortened for brevity)
出于某种原因“Home”没有在第10列开始,有人可以告诉我为什么吗?我正在使用SBCL运行代码,最新版本。
答案 0 :(得分:3)
两件事:
<强>备注强>:
0]
表示您处于调试循环中。离它远一点。 help
显示命令。
<强>问题强>:
也许这是SBCL的一个错误。您可能想在其邮件列表中讨论它。那会很有用。
我的猜测:
* (dump-db)
^^ <- 2 characters
TITLE: Home
^^^^^^^^ <- 8 characters, 2 less than specified
如果您回到顶层,则会看到SBCL提示符为*
- 这是两个字符长。现在你看到Home
的第一个缩进是两个字符短。因此,Lisp打印机认为提示符的两个字符位于同一行,然后位置十位于接下来的八个字符上 - 比需要的少两个字符。也许Lisp打印机被REPL编程的方式搞糊涂了。接下来的行很好。
顺便说一下,LispWorks或Clozure CL不会发生这种情况。
答案 1 :(得分: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]
它似乎已经固定了......但我不确定如何或为什么(问题我仍然会喜欢答案)。