Haskell:将平均值与平均值列表进行比较

时间:2014-12-31 16:49:53

标签: haskell functional-programming

我试图通过Haskell比较平均值。我已经列出了双打名单和双打名单。我想要的是比较每个双打列表的平均值(从双打列表列表)到另一个双打列表的平均值。当平均值更高时,我想返回双打列表。

我不知道如何在Haskell中做到这一点。有人知道如何让我入手吗?我是否需要某种迭代或者我可以使用地图吗?谢谢!

编辑: 我有一个函数来计算数组的平均值:

calculateAverage :: [Double] -> Double
calculateAverage xs = sum xs / fromIntegral (length xs)

这就是我尝试过的,我知道它没有多大意义,但我不知道如何在地图上或在哪里结合:

listsGreaterThenAverage :: [[Double]] -> [Double] -> [[Double]]
listsGreaterThenAverage x y = map (if map calculateAverage x > calculateAverage y then x)

我将获得双打列表的列表,并将每个双打列表的平均值与第二个参数的平均值进行比较,即双打列表。如果双打列表的平均值(来自双打列表列表)大于第二个双打列表的平均值,则会将双打列表添加到返回值中。

2 个答案:

答案 0 :(得分:1)

它并不是很清楚你究竟在问什么,但我建议你看一下map函数,它将函数应用于列表的每个元素。您应该使用let表达式或where子句来保存要与其余列表进行比较的列表的平均值。想想如何计算列表的平均值而不必遍历它两次。

答案 1 :(得分:1)

列表清单中有多少个列表?请提供您的数据样本,这将有很大帮助。你可以写一个理解,如果我理解你的意思,你的返回列表填充列表列表中的列表的平均值,只要它们是平均值的最大值。