2009-11-23 4 views
3

J'ai maintenant un problème avec l'utilisation de "reduce" pour implémenter ma propre version de copy-list. Ce est ce que je l'ai fait:Une simple question Lisp

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

Cependant, mon professeur a dit qu'il n'y a pas besoin d'utiliser ce lambda, je suis confus à ce sujet. Comment pouvons-nous atteindre la même fonctionnalité sans utiliser ce lambda (mais devons utiliser 'réduire'). Merci beaucoup.

+0

Indentez votre code avec 4 espaces pour le placer dans un bloc de code et la syntaxe en surbrillance. – rfunduk

+2

Non que la "coloration syntaxique" sur ce site fasse quelque chose d'utile pour les langues non-C-like :) –

Répondre

15

Ce que votre professeur signifie est que vous définissez cette fonction

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

Mais il y a déjà une fonction qui existe pour le faire - se cons. Donc, au lieu de passer votre lambda comme argument à reduce, vous pouvez simplement passer cons.

2

c'est ce que par contre: il faut deux valeurs et les paires.

est ce que (lambda (x y) (cons x y)) fait: il prend deux valeurs et les paires.