2014-09-23 54 views
1

我正在關注Practical Common Lisp。我已經按照這個例子來開球了。當我在Emacs中編譯C-c C-c我得到以下錯誤代碼。常見lisp錯誤,沒有綁定變量

(defun make-cd (title artist rating ripped) 
    (list :title title :artist artist :rating rating :ripped ripped)) 

(defvar *db* nil) 
(defun add-record (cd)(push cd db)) 

警告:ADD-RECORD:DB既不申報也沒有約束, 就好像宣佈SPECIAL它將被處理。

我不明白是怎麼回事。它不能是代碼,因爲我已經嘗試了在clisp和sbcl中,都得到類似的錯誤。爲什麼會發生?我的設置可能錯了嗎?

+0

'CC CC' 只編譯一個形式,一個地方光標是。確保你編譯了所有表單。 – 2014-09-24 11:03:53

回答

7

你從這個text製作的拷貝錯誤:

(defun add-record (cd) (push cd *db*)) 

其中*db*(介意*標誌)是指以前

(defvar *db* nil) 
+0

嗨,謝謝你的幫助....我仍然得到一個錯誤...我玩了這個代碼後玩弄嘗試使它的工作...如果我使用終端,我不會得到相同的錯誤,只有在煤泥:警告: 未定義的變量:* DB * ...這是與你給的更正...是否有可能我的設置是腐敗? – 2014-09-24 09:29:34

+0

好的...所以我的函數和變量加載不正確。我用一個空格命名我的文件,並沒有加載到repl中,然後編譯...一些這是如何帶走了這個問題... – 2014-09-24 11:50:03

+0

@CuriousLambda很高興你把它整理出來! – uselpa 2014-09-24 11:51:31