Common Lisp 中的嵌套列表真的让我很困惑。这是问题所在:
通过使用递归,
如果第一个参数出现在第二个参数(可能是嵌套列表)中,则(nested-list 'b '(a (b c) d))
返回,否则返回。t
nil
我试过find
了,但只有第一个参数是'(b c)
. 我把目光转向了 lambda 表达式。我想先展平第二个参数,然后用它eq
来比较参数。
(defun nested-list (x y)
(cond
((null y) ())
(t (append (lambda (flatten) (first y))
然后我就卡住了。尽管我读了很多关于 lambda 表达式的东西,但它仍然让我感到困惑。我不知道在需要时如何调用它,我知道 funcall 函数,但你知道我就是无法获得它。刚学了Common Lisp 5天,希望大家多多指教。非常感谢!