2009-11-23 56 views
3

我现在在使用“reduce”来实现自己的拷贝列表版本时遇到了问题。 这是我做了什么:一个简单的Lisp问题

(defun my-copy-list (lst) 
    (reduce #'(lambda (x y) 
       (cons x y)) 
      lst :initial-value nil :from-end t)) 

然而,我的老师说,有没有必要使用拉姆达,我对这个困惑。我们如何在不使用lambda的情况下实现相同的功能(但必须使用'reduce')。 非常感谢。

+0

使用4个空格缩进代码,使其置于代码块中并突出显示语法。 – rfunduk 2009-11-23 22:58:12

+2

不是说这个网站上的“语法突出显示”对非C语言有用吗:) – 2009-11-23 23:01:39

回答

15

什么你的老师的意思是,你定义这个功能

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

但已经有存在这样做的功能 - cons本身。因此,不要将您的lambda作为参数传递给reduce,而只需传递cons即可。

2

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

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