2009-11-23 58 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))所做的:它需要兩個值並將它們配對。