【发布时间】:2021-02-08 08:59:12
【问题描述】:
我对 common lisp 还是很陌生,并且一直被困在一个特定的问题上。我想写的函数有两个参数:一个函数和一个列表。它遍历列表并在列表中的每个元素上调用给定的函数。如果函数返回 true,则将元素添加到返回的子列表中
到目前为止我尝试过的是:
(defun myFunc(f l)
(loop for x in l
if (listp x) do (myFunc f x)
else if (eql t (funcall f x))
collect x
)
)
我为 f 提供的函数带有一个参数,如果它是一个数字,则返回 true。到目前为止,如果 aList 是一个简单的列表,例如 (1 2 3),我的代码就可以工作。但是,当我输入像 (1 2 (4 5) 7) 这样的嵌套列表时,只会输出 (1 2 7) 而不是 (1 2 (4 5) 7)。
我假设它与我的递归调用和返回的内容有关。非常感谢您对此的帮助
【问题讨论】:
标签: loops recursion lisp common-lisp