Haskell语法:从列表中的元组添加int

时间:2014-02-28 20:14:45

标签: haskell

我搜索过该网站但找不到任何针对此问题的内容。

我有一个包含stringsintegers三元组的列表,如下所示:

mylist = [("Amy", 6), ("Scott, 3"), ("Bradley", 4)]

我想写一个函数,它只是将这个列表中的所有整数加起来

我目前有这个功能:

addMarks :: [(String, Int)] -> Int
addMarks pairList = [ j+j | (i,j) <- pairList ]

j+j不起作用,我不确定正确的语法是仅添加'j'并离开i

1 个答案:

答案 0 :(得分:3)

您希望对一对的第二个值求和。有一个函数可以对列表的内容进行求和(sum),并且有一个函数可以获取对的第二个值(snd):

addMarks = sum . map snd

map f获取列表并通过将f应用于每个元素来返回新列表。如果你想为此使用列表理解,你最终会得到

addMarks pairList = sum [ j | (_,j) <- pairList ]

因为列表理解只是filtermap的语法糖。