我必须从所有级别删除列表中元素的所有出现。 我的代码是:无结果列表Lisp
(defun sterge(e l)
(cond
((and (atom l) (equal e l)) nil)
((atom l) (list l))
(t (append (apply #'list (mapcar #' (lambda (l) (sterge e l)) l))))
)
)
(defun sterg(e l)
(car (sterge e l))
)
当我给:
(sterg 1 '(1 2 1 (1 2 1(1 (1) (1)) (1) 3) (1)(2)))
它让我看到输出:
((2 (2 (NIL NIL) NIL 3) NIL (2)))
如何删除零?谢谢。
如果您从(1)中删除1,您应该(正确)得到一个空列表,即NIL。这正是你从你的功能中获得的。换句话说,该功能是正确的!为了确信这一点,在REPL中写入'(remove 1'(1))'(使用标准函数'remove')。 – Renzo