我想編寫一個函數,它需要兩個參數列表並檢查第一個元素中是否包含第二個元素(元素的順序無關緊要)。該函數也將檢查兩個列表是否具有相同的長度(兩個列表不能有重複的元素),因爲如果不是,那麼函數將返回nill/false。LISP:如何測試兩個列表是否具有相同的元素?
例如: (ABCDEF)和(BEAFDC)具有相同的元件 (零)和(無)具有相同的元件
(ABCDEF)和(ABCDEFG)不具有相同的元件
問題是我知道只有一些基本的命令,我可以使用那些。這是幾乎所有我認識的命令:
CAR, CDR, LENGTH, NULL, MEMBER, NOT, AND, OR, NOT, MAPCAR, APPLY, DO, SETQ, LET
我寫了下面的函數到現在爲止,但我不知道如何檢查重複的成員,它不適合所有列表正常的工作,我想檢查:
(defun same-elem-p (lst1 lst2)
(cond ((not (null lst1))
(cond ((member (car lst1) lst2)
(same-elem-p (cdr lst1) lst2))
(t nil)))
(t t)))
我希望我解釋得很好的問題。
感謝您的回答。是否有可能只用一個函數來編寫所有這些?我想知道你爲什麼寫成員函數;它在LISP中還不存在? – seby598
當然有一種方法,但我認爲這不會很簡單!和是的成員函數已經存在,但我忘了。我沒有在LISP上編程已經有一年多的時間了。 – Kira