我现在遇到使用“reduce”来实现我自己的copy-list版本的问题。 这就是我所做的:
(defun my-copy-list (lst)
(reduce #'(lambda (x y)
(cons x y))
lst :initial-value nil :from-end t))
然而,我的老师说没有必要使用那个lambda,我对此感到困惑。我们如何在不使用lambda的情况下实现相同的功能(但必须使用'reduce')。 非常感谢。
答案 0 :(得分:15)
您的老师意味着您正在定义此功能
(lambda (x y) (cons x y))
但是已经有一个功能存在 - cons
本身。因此,不要将lambda作为参数传递给reduce
,而是可以传递cons
。
答案 1 :(得分:2)
这就是缺点:它需要两个值并将它们配对。
这是 (lambda (x y) (cons x y))
的作用:它需要两个值并将它们配对。