1

ページへのリンクは次のとおりです: Chapter 3, Practical: A Simple Database。基本的に、表示したい 4 つの値を持つリストのデータベースがあります。これは

(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

2つのこと:

備考:

0] あなたがデバッグループにいると言います。それから出てください。helpコマンドを示します。

問題:

SBCL のバグかもしれません。メーリング リストで議論することもできます。それは役に立ちます。

私の推測:

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

トップレベルに戻ると、SBCL プロンプト* が 2 文字の長さであることがわかります。Homeの最初のインデントが 2 文字短いことがわかります。そのため、Lisp プリンターは、プロンプトの 2 文字が同じ行にあり、10 番目の位置が次の 8 文字であると認識します。おそらく、Lisp プリンターは、R​​EPL がプログラムされている何らかの方法で混乱しています。次の行は問題ありません。

ところで、これは 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 に答える