Haskell将元组中第二个元素的总和除以

时间:2014-02-28 22:17:59

标签: haskell

我有一个元组列表,我想计算出平均值: (所有int的总和)/列表长度

列表如下:

[("Student1", 1), ("Student2", 2), ("Student3", 3)]

到目前为止,我有一个功能可以添加所有'年龄'(1,2和3),但我不知道如何将其与列表长度的分区相结合。

功能:

addMarks :: [(String, Int)] -> Int
addMarks list = sum . map snd / length(list)

长度(列表)给了我3,所以如果我可以将sum函数除以长度,我将得到我的平均值。

没有lamda表达式,如果你可以,

谢谢! 汤姆

1 个答案:

答案 0 :(得分:2)

如果您希望将结果放在div中,请使用Int功能。使用/会得到一个小数结果。这段代码应该有效:

addMarks :: [(String, Int)] -> Int
addMarks list = sum (map snd list) `div` length(list)   

或更清洁的版本:

addMarks :: [(String, Int)] -> Int
addMarks list = sum nums `div` length nums
  where nums = map snd list

您也可以使用/功能来解决此问题。然后,您必须使用fromIntegral之类的函数将它们转换为正确的类型。