我需要执行一个发送值的函数,并在列表中检查是否有相等的值以将其删除。这里有些例子:
(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)))
由于某种原因,列表中的最后一个值没有显示。希望有人可以提供帮助。
谢谢!