У меня возникла проблема с использованием функции карты, чтобы вернуть список квадратов отклонения заданного набора чисел. Я написал функцию квадратного отклонения следующим образом, но я не знаю, как это сопоставить. Есть ли способ изменить функцию квадратного отклонения, чтобы он не принимал «l» в качестве параметра? Если бы я написал такую функцию, я бы знал, как ее сопоставить.Карта Практика функций в схеме
(define (square-of-deviation l)
(define (square-of-deviation-h n)
(if (null? n)
'()
(cons (expt (- (car n) (average l)) 2)
(square-of-deviation-h (cdr n)))))
(square-of-deviation-h l))
Я написал функцию, что я мог бы использовать для сопоставления, но он требует, чтобы я пройти один и тот же список в два раза, когда я проверить мой код:
(define (square-of-deviation-2 l)
(lambda (x) (expt (- x (average l)) 2)))
(map (square-of-deviation-2 '(1 2 3 4 5)) '(1 2 3 4 5))
Должен ли я изменить свою функцию карты здесь? Я написал его следующим образом:
(define (map f items)
(if (null? items)
'()
(cons (f (car items))
(map f (cdr items)))))
Мне не удобно использовать функции отображения в примере, подобном этому. Моя верхняя функция работает по назначению, но книга, которую я изучаю, просит меня написать это с помощью функции карты. –