这是我第一次发帖,我对计划有疑问。当输入这样的参数时,我必须从列表中删除所有出现的元素,同时作为参数传递:
]=> (rmobject '(1 2 3 5 0 2 3 5 3) 3)
我收到一个错误:
The object (3 5 3 2 3 6 3) is not applicable
我想这是因为第二个 lambda 不能正常工作,但为什么呢?
(define (rmobject list1 obj)
(if (null? list1)
'()
(if (= obj (car list1))
((lambda (list1) (cdr list1)) list1)
((lambda (list1) (list1)) list1)))
(cons (car list1) (rmobject (cdr list1) obj)))
我重写了代码,这在删除元素时可以正常工作,但正确的不能,并且两者都假设相同。提前致谢
(define (rmobject list1 obj)
(if (null? list1)
'()
(if (= obj (car list1))
(rmobject (cdr list1) obj)
(cons (car list1) (rmobject (cdr list1) obj)))))