首页 > 解决方案 > 如何在另一个函数的结果列表上使用 map ?

问题描述

mean :: (Real a, Fractional b) => [a] -> b
mean xs = (realToFrac(sum xs) / realToFrac(length xs))

sqDiff1 :: (Fractional b, Real b) => [b] -> [b]
sqDiff1 xs = map(subtract (mean xs))xs
sqDiff2 :: Num b => (t -> [b]) -> t -> [b]
sqDiff2 sqDiff2 xs = map(^ 2)(sqDiff2 xs)

sqDiff1 从每个元素中减去列表的平均值。

基本上我想要做的是平方 sqDiff1 的元素。

我怎样才能做到这一点?

标签: haskell

解决方案


如果您只想计算与该函数的差异,则不需要函数参数:

sqDiff2 :: Real b => [b] -> [b]
sqDiff2 xs = map (^ 2) (sqDiff1 xs)

如果您真的想要一个函数参数,请传递您要使用的参数:

*Main> sqDiff2 sqDiff1 [1,2,3,4,5,6]
[6.25,2.25,0.25,0.25,2.25,6.25]

推荐阅读