1

マップ関数を使用して、特定の数値セットの偏差の 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)))))
4

1 に答える 1