Я летаю вслепую по схеме, и мне кажется, что как только я отвечу на этот вопрос, остальная часть моей домашней работы должна пройти гладко.
Я определяю функцию, которая принимает список в качестве единственного аргумента, а затем возвращает тот же список с добавлением первого элемента к остальным. Например:
(addFirst ‘(4 3 2 1)) => (8 7 6 5)
У меня есть ощущение, что я должен использовать здесь функции карты и машины... но я просто не могу понять это правильно. Моя текущая версия этого кода выглядит так:
(define (addlist x) ;adds the first element of a list to all other elements
(define a (car x)) ;a is definitely the first part of the list
(map (+ a) x)
)
Как я могу заставить функцию сложения работать таким образом? Очевидно, я не могу предоставить список в качестве параметра, но должен ли я снова использовать автомобиль или рекурсию?
Хорошо, для потомков, вот завершенный, правильный, отформатированный код:
(define (addlist x) ;adds the first element of a list to all other elements
(define a (car x)) ;a is definitely the first part of the list
(map (lambda (y) (+ a y)) x)
)
(+) a
действительно возвращает функцию, которая добавляетa
к своему аргументу. - person gcbenison   schedule 21.03.2012