マップ関数を使用して、特定の数値セットの偏差の 2 乗のリストを返すのに問題があります。偏差の二乗関数を次のように書きましたが、これをマッピングする方法がわかりません。パラメータとして「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))
マップに使用できる関数を作成しましたが、コードをテストするときに同じリストを 2 回渡す必要があります。
(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)))))