一个简单的Lisp问题

时间:2009-11-23 22:56:49

标签: lisp

我现在遇到使用“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')。 非常感谢。

2 个答案:

答案 0 :(得分:15)

您的老师意味着您正在定义此功能

(lambda (x y) (cons x y))

但是已经有一个功能存在 - cons本身。因此,不要将lambda作为参数传递给reduce,而是可以传递cons

答案 1 :(得分:2)

这就是缺点:它需要两个值并将它们配对。

这是 (lambda (x y) (cons x y)) 的作用:它需要两个值并将它们配对。