0
我寫兩個程序一個是取出allButLast,另一個是取出secondcond。會員功能不能在cons結構中工作
我最初使用成員函數來確定是否有更多的X落後。
我嘗試了一些資料後,發現:
如果第一個參數是一個符號,他們兩人的工作!
但是,如果它是cons結構,它們都會失敗。
1.// `(a b) `((b b)(a b)(b c)(a b)) ==> `((b b)(b c)(a b))
(defun takeoutAllButLast (X L)
(cond ((null L) nil)
((equal X (first L))
(if (member X (rest L))
(takeoutAllButLast X (rest L))
L))
(t (cons (first L) (takeoutAllButLast X (rest L))))
)
)
2.//`(a b) `((a b)(b b)(a b)(b c)(a b)) ==> `((a b)(b b)(b c)(a b))
(defun takeoutSecondLast (X L)
(cond ((null L) nil)
((equal X (first L))
(if (member X (rest (member X (rest L))))
(cons (first L) (takeoutSecondLast X (rest L)))
(rest L)
)
)
(t (cons (first L) (takeoutSecondLast X (rest L))))
)
我想問的是如何確定是否還有一個因素是X的背後,可以像成員函數中使用?
爲什麼成員函數不能用來比較cons結構?
Thx爲你閱讀我的問題!
你能給一個例子,一個平等檢查傳遞給會員嗎?謝謝。 –
試試(會員X(其餘L):test#'等於) – ckb
非常感謝!有用! –