从列表中删除原子的出现 - LISP

时间:2018-01-07 03:07:43

标签: lisp

我是LISP的新手,在这里我试图从列表中删除所有出现的原子 -

到目前为止我的代码 -

(defun rematom (A LAT)
   (cond
      ((null LAT) ())
      ((EQ (car LAT) A car LAT))
      (T (cons (car LAT)(rematom, A (cdr LAT))))
)))

此代码删除了第一次出现的元素,如何删除所有出现的内容?

我的输出 -

> (rematom 'a '(a b c a d a))
(B C A D A)

渴望 -

>(rematom 'a '(a b c a d a))
(B C D)

感谢。

1 个答案:

答案 0 :(得分:1)

第二种情况应该调用rematom:

  ((EQ (car LAT) A) (rematom A (cdr LAT)))

只有第一种情况,即检查空列表的基本情况,应该是非递归的。这里的其他人需要递归地调用rematom。