2009-11-23 1 views
3

이제는 "reduce"를 사용하여 내 버전의 copy-list를 구현하는 데 문제가 있습니다. 이 내가 무엇을했는지 있습니다 : 간단한 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

+2

이 사이트의 "syntax highlighting"은 비 C 언어와 같은 유용한 기능을 수행하지 않습니다. :) –

답변

15

은 무엇 선생님이 의미하는이 기능을

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

를 정의하고 그러나 그렇게하기 위해 존재하는 기능이 이미있을 것입니다. 따라서 람다를 reduce에 대한 인수로 전달하는 대신 cons을 전달할 수 있습니다.

2

이것은 단점과 같습니다 : 두 값을 취하여 쌍을 이룹니다.

이것은 다음과 같습니다. (lambda (x y) (cons x y)) : 두 값을 취하여 쌍을 이룹니다. cons 자체 -