0

我想要一个函数,它给我一个给定列表中所有列表的所有头部的总和。我正在尝试这个:

verticalParity :: [Int] -> [Int] -> Int
verticalParity (x:xs) (y:ys) = x + y

为什么我不能这样做?

map verticalParity [[2,0,2,2,2,1], [5000,0,2,3,2,1], [26,1,2,3,44,4]]
4

1 回答 1

8

这将做你所描述的

sum . map head

您发布的功能不起作用,因为您要完成的不是地图,而是折叠(其中 sum 是一个示例)。

您还可以将您的 verticalParity 函数更改为此

verticalParity :: Int -> [Int] -> Int
verticalParity x (y:ys) = x + y

并使用它

foldl verticalParity 0 [[2,0,2,2,2,1],[5000,0,2,3,2,1],[26,1,2,3,44,4]]
于 2012-12-05T15:40:23.867 回答