我搜索过该网站但找不到任何针对此问题的内容。
我有一个包含strings
和integers
三元组的列表,如下所示:
mylist = [("Amy", 6), ("Scott, 3"), ("Bradley", 4)]
我想写一个函数,它只是将这个列表中的所有整数加起来
我目前有这个功能:
addMarks :: [(String, Int)] -> Int
addMarks pairList = [ j+j | (i,j) <- pairList ]
j+j
不起作用,我不确定正确的语法是仅添加'j'
并离开i
。
答案 0 :(得分:3)
您希望对一对的第二个值求和。有一个函数可以对列表的内容进行求和(sum
),并且有一个函数可以获取对的第二个值(snd
):
addMarks = sum . map snd
map f
获取列表并通过将f
应用于每个元素来返回新列表。如果你想为此使用列表理解,你最终会得到
addMarks pairList = sum [ j | (_,j) <- pairList ]
因为列表理解只是filter
和map
的语法糖。