我正在研究一個Lisp程序,該程序包含讀取框尺寸的代碼,然後從最短到最長的長度對它們進行排序(並將這些新長度中的每一個設置爲新變量)。LISP中未定義的函數錯誤
當我嘗試我的文件加載到解釋,我得到以下錯誤:
*** - EVAL: undefined function NEW-D1
我很困惑,爲什麼我會遇到這個錯誤new-d1
不是一個函數,它的給定框的最短邊的長度的變量。
這裏就是new-d1
第一次初始化並設置代碼:
(defun get-box()
(let ((d1 0) (d2 0) (d3 0) (new-d1 0) (new-d2 0) (new-d3 0))
(setf d1 (read))
(setf d2 (read))
(setf d3 (read))
(if (= d1 -1)
(exit)
(progn
(setq new-d1 (first (sort (list d1 d2 d3) #'<)))
(setq new-d2 (second (sort (list d1 d2 d3) #'<)))
(setq new-d3 (third (sort (list d1 d2 d3) #'<)))
(next-part-of-program (new-d1 new-d2 new-d3))))))
我怎樣才能改變我的代碼,以便解釋知道新-D1是不是一個功能,並且不把它當作這樣?謝謝你的幫助!
編輯補充:程序代碼的下一個部分:
(defun next-part-of-program(d1 d2 d3)
(if (> d2 b)
(put-on-c-list(d1 c-list))
(if (> d2 a) and (< d2 c)
(put-on-b-list (d1 b-list))
(put-on-a-list (d1 a-list)))))
注:我已經初始化列表,B列表和C-列表前面爲全局變量/列表被添加到後來。
再次感謝!
當我運行你的函數,我得到了一個不同的錯誤:函數'next-part-of-program'是未定義的。在上面的代碼中,符號'new-d1'不被用作函數。請用產生錯誤的實際代碼更新您的問題。 – Kaz
您可能已定義了「程序的下一部分」功能,這就是'new-d1'被調用或用作函數的地方。 – Kaz
謝謝;我在我的代碼中添加了下一個函數。 'new-d1'在這裏用作函數還是可以在我的代碼中更晚一些,比如'put-on-a-list'? – user1462294