我在使用 map 函数返回给定数字集的偏差平方列表时遇到问题。我写了我的偏差平方函数如下,但我不知道如何映射它。有没有办法纠正我的偏差平方函数,使其不以“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)))))