Вопрос в закомментированном коде полностью отличается от процедуры, которую вы написали, он просит вас использовать map
и передать lambda
, которая выдаст последовательность, как в примере:
(map (lambda (e)
(if (odd? e) (* 2 e) (* e e)))
(list 1 2 3 4 5 6 7 8 9 10))
=> '(2 4 6 16 10 36 14 64 18 100)
Если вы хотите реализовать mapp
- вашу собственную версию map
, которая решает эту проблему, в частности, она будет go примерно такой:
(define (mapp lst)
(cond ((null? lst) '())
((odd? (car lst))
(cons (* 2 (car lst)) (mapp (cdr lst))))
(else
(cons (* (car lst) (car lst)) (mapp (cdr lst))))))
(mapp (list 1 2 3 4 5 6 7 8 9 10))
=>'(2 4 6 16 10 36 14 64 18 100)
Обратите внимание, что вам нужен только один параметр , список. На самом деле первоначальная ошибка в вопросе заключалась в том, что вы определили процедуру с двумя параметрами, но передали только один.