У меня возникли проблемы с использованием функции карты для возврата списка квадратов отклонения заданного набора чисел. Я написал свою функцию квадрата отклонения следующим образом, но не знаю, как ее отобразить. Есть ли способ исправить мою функцию квадрата отклонения, чтобы она не принимала «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)))))