2009-11-23 2 views
3

У меня теперь есть проблема с использованием «уменьшить» для реализации моей собственной версии списка копий. Это то, что я сделал:Простой вопрос Lisp

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

Однако, мой учитель сказал, что нет никакой необходимости использовать эту лямбду, я запутался об этом. Как мы можем достичь той же функциональности, не используя эту лямбду (но должны использовать «уменьшить»). Большое спасибо.

+0

Отметьте свой код четырьмя пробелами, чтобы он был помещен в блок кода и выделен синтаксис. – rfunduk

+2

Не то, чтобы «подсветка синтаксиса» на этом сайте делала что-нибудь полезное для не-C-подобных языков :) –

ответ

15

Что ваш учитель означает, что вы определяете эту функцию

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

Но уже есть функция, которая существует, чтобы сделать это - cons сам. Поэтому вместо того, чтобы передавать вашу лямбду в качестве аргумента в reduce, вы можете просто пройти cons.

2

Это то, что делает минус: он принимает два значения и пары их.

это то, что (lambda (x y) (cons x y)): принимает два значения и пары их.

Смежные вопросы