嘿傢伙我有最後一個問題我試圖解決我的學期。我需要創建:LISP通用列表功能
(myCommon L1 L2)
Evaluates to a list of elements that are common in both lists L1 and L2.
Assume L1 and L2 have no repeated elements.
eg. (myCommon ‘(p a e g) ‘(a q r e)) → (a e)
我只能用以下功能:
(atom X)
(quote X)
‘X
(eq X Y)
(cons X L)
(car L)
(cdr L)
(list A B C)
(if X Y Z) .
(cond (C1 S1) (C2 S2) …… (Cn Sn))
(lambda (P1 P2 …… Pn) E)
(funcall F (P1 P2 …… Pn))
我還可以用我已分配中創建的功能。到目前爲止,我已經創建了:
(defun myLast (L)
(if (eq (cdr L) '())
(car L)
(myLast (cdr L)))) ;Evaluates to the last element of list L
(defun myCount (X L)
(cond ((eq L '()) 0)
((eq X (car L))(+ 1 (myCount X (cdr L))))
(+ (myCount X (cdr L))))) ;Evaluates to number of occurrences of X in L
(defun myMember (X L)
(cond ((eq L '()) '())
((eq X (car L)) t)
(t (myMember X (cdr L))))) ;Evaluates to true if X in L, false otherwise
這個分配的問題是我不能碰見老師問問題作爲了HES,並具有「有限的電子郵件訪問」現在。我不能問如何解決這個問題的問題,我甚至對從哪裏開始這個功能感到困惑。我想我必須像L1的車一樣使用myMember,並檢查它是否在L2中,是否將它放在新列表中並遞歸添加到列表中。我不知道如何做到這一點。任何人都可以幫助我,所以我最終可以完成這個學期?謝謝!
「對於列表1中的每個元素,檢查它是否是列表2中的成員」 –