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天,所以我希望你能给我一个 暗示。非常感谢!
答案 0 :(得分:2)
首先,除非您错误输入if
而不是iff
这个问题非常简单,只需返回t
即可完成: - )
严肃地说,当您需要使用递归解决问题时,这个想法通常只是:
具体考虑:
NIL
T
所以基本上1和2是微不足道的案例; 3和4是您解决问题的简单版本的情况。