【发布时间】:2021-12-16 17:10:46
【问题描述】:
我尝试返回列表中与“a”不匹配的所有元素。 这是我到目前为止所尝试的。
(defun removeA (arr)
(cond((null arr) nil)
((if (listp (car arr))
(or (removeA (car arr)) (removeA (cdr arr)))
(if (eql 'a (car arr))
(removeA (cdr arr))
(cons (car arr) (removeA (cdr arr)))
)
))
)
) (print (removeA '(a (a) (v a e) (a a) d)))
here is the output: (V E)
i need help on why its not printing "D" as well
【问题讨论】:
-
提示:您需要做的第一件事是发布正确缩进的代码。您发布的代码没有正确缩进。接下来是:检查 COND 的语法以及它应该如何使用。
-
预期的结果是什么?应该是
(v e d),还是((v e) d),还是(() (v e) () d),...?cond已经是条件形式:为什么要嵌套if形式?正确的代码格式将帮助包括您自己在内的所有人阅读您的 lisp 代码。
标签: lisp common-lisp