1
我需要做一個函數,我發送一個值,並檢查列表中是否有相同的值來刪除它。下面是一些例子:SCHEME從列表中刪除原子值
(elimina 1 '(a b c)) => (a b c)
(elimina 'b '(a (b) c)) => (a() c)
(elimina 1 '(0 (1 (2) 1) 0)) => (0 ((2)) 0)
我嘗試這樣做:
(define (elimina v1 lista)
(cond ((null? lista)'())
((list? (first lista))
(list (elimina v1 (first lista))))
(else
(if(equal? v1 (first lista))
(elimina v1 (cdr lista))
(append (cons (first lista) (elimina v1 (cdr lista))))))
)
)
我的結果,其中這樣的:
(elimina 1 '(a b c)) => (a b c)
(elimina 'b '(a (b) c)) => (a())
(elimina 1 '(0 (1 (2) 1) 0) => (0 ((2)))
由於某些原因,名單上的最後一個值不顯示。希望有人能幫忙。
謝謝!
謝謝非常! – 2014-09-23 00:41:58