2012-07-13 62 views
0

我想做一個迭代函數來計算如果元素el是列表的成員並返回一個 原子。檢查元素,如果列表的成員

;;;這是列表 (setf lst'(a b c d e 1 2 3 4 5))

;;;這是檢查它是否爲列表成員的函數。

(defun checklist (a lst) 
      (if (member a alist) 
       a)) 

當我把輸入 - >(清單1 LST),它返回數...但是,當我輸入字母,它返回我的錯誤。 ..任何人都可以幫我指出出了什麼問題?提前致謝 。

============================================== ==================================

當我輸入 - >(question5 a lst)

它給我這樣的錯誤。

CG-USER(7):(question5 a lst) 錯誤:嘗試取未綁定的變量「A」的值。 [條件類型:UNBOUND-VARIABLE]

+0

只是告訴我們錯誤是如何發生的。 – 2012-07-13 07:26:05

+0

我已經把上面的錯誤.. – Eric 2012-07-13 07:29:00

+0

埃裏克:'a'是一個變量。你需要引用它,所以它保持一個符號,並沒有得到評估。 – 2012-07-13 07:29:58

回答

2

這是作業嗎?

如果是:

我不認爲member是對您有用。如果你想做一個迭代解決方案,那麼你會使用類似DODOLIST

如果沒有:

Common Lisp的具有發現在序列中的元素(列表,向量,字符串,...)函數:FIND

新增:使用(question5 'a lst)

另外請注意,您的定義有一個不幸的部分:

(checklist nil '(a b c)) 

(checklist nil '(a b c nil)) 

都將返回NIL。 。

順便說一句,從Touretzky Lisp的介紹書是免費下載:http://www.cs.cmu.edu/~dst/LispBook/ 這本書提供了一個很好的介紹到Lisp程序設計的基本知識。

+0

雅是一個家庭作業..我和我的朋友困惑了很長時間,所以問在那裏..如果要實施做或dolist,如何實現它?我還沒有得知,但.. – Eric 2012-07-13 07:34:30

+0

好的。感謝您的建議和幫助..我會去和Lok那..謝謝.. – Eric 2012-07-13 07:40:36

相關問題