列表列表中的头部总和

时间:2012-12-05 15:29:16

标签: list haskell

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

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]]

1 个答案:

答案 0 :(得分:8)

这将完成您所描述的内容

sum . map head

你发布的功能不起作用,因为你想要完成的不是地图,它是一个折叠(总和是一个例子)。

您也可以将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]]