2013-03-29 64 views
1

以下是鏈接到頁面:Chapter 3, Practical: A Simple Database。 本質上,我有一個列表的數據庫與我想要顯示的四個值。這是通過做Formatting%10t來自Practical Common LISP的錯誤

(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來運行代碼,最新版本。

回答

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不會發生這種情況。

+0

謝謝,它不是調試循環,儘管感謝您指出它。絕對只是SBCL的一些東西。 – Puzzler3141

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] 

這似乎有固定的本身......我不知道如何和爲什麼(我的問題還是願意愛回答)雖然。