lisp - 删除所有出现

标签 lisp common-lisp

删除所有出现的问题 5 (0/32)

定义一个 deleteAll 函数,它有两个输入参数 x 和 L,其中 x 是一个原子,L 是一个包含原子元素和任何级别的子列表的列表,函数返回一个列表,其中所有出现的 x 都被删除列表 L.

当列表有子列表时我有问题。我无法在子列表中递归检查它是否包含重复项。

(defun deleteAll (x L)
    (cond
      ((null L) nil)
      ((not(atom(car L))) (deleteAll x (cdr L)))
      ((not(eq x (car L))) (cons (car L) (deleteAll x (cdr L ))))
      (T(deleteAll x (cdr L)))))

最佳答案

在第二个术语中,您从谓词中知道您在第一个元素中得到了一个列表。除了需要处理 carcdr 之外,您应该执行与第三个结果相同的操作。

关于lisp - 删除所有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29636770/

相关文章:

functional-programming - 在 Common Lisp 中反转多个值的顺序

lisp - 有没有记住car和cdr意思的助记词?

parameters - LISP 参数绑定(bind)

lisp - 为什么 caddr[(A B C)] = C?

functional-programming - 什么时候可以修改函数式语言中的变量?

list - 为什么我的 lisp 函数给我这个输出?

common-lisp - Lisp %var 命名约定

common-lisp - 如何修改此代码以支持 CCL?

macos - OS X 的最佳 Scheme 或 LISP 实现是什么?

C++制作一个松散类型的语言解析器