2012-12-05 126 views
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]] 
+1

映射它OP實際需要的[INT] - >一個,但它看起來像OP真正想要的折東西 – soulcheck

回答

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

爲什麼你用0?謝謝 – user1876106

+0

@ user1876106 0是起始值。任何零值的總和爲0. –

+0

我怎樣才能把一個列表中的元素應用到head元素上,而對其他元素呢?例如[[1,0,0],[1,1,1],[1,0,0]] = [3,1,1]。謝謝 – user1876106