Haskell语法:在列表中添加元组的整数



我已经搜索了该网站,但找不到特定于此问题的任何内容。

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

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

我想编写一个函数,该函数将仅将此列表中的所有整数相加

我目前有以下功能:

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

j+j不起作用,我不确定正确的语法是只添加'j' s并保留i.

你想要对一对的第二个值求和。有一个函数用于对列表的内容求和(sum),还有一个函数用于获取一对的第二个值(snd):

addMarks = sum . map snd

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

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

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

最新更新