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