【发布时间】:2013-12-18 21:57:50
【问题描述】:
我正在尝试编写函数来汇总列表列表(类型Integer)。我已经使用map 完成了它:
summat :: [[Integer]] -> Integer
summat (x:xs) = sum . map sum $ (x:xs)
但不知道如何使用foldr/foldl 使其工作。我试过类似的东西:
summat2 :: [[Integer]] -> Integer
summat2 xs = foldr suma 0 xs
where suma x _ = ???
但当然它只会产生很多错误。你对我有什么暗示吗?可能是concat?
【问题讨论】:
-
您当然可以使用
concat,然后再使用折叠进行求和,老实说,我就是这样做的。concat是一个惰性函数,因此您仍然可以轻松获得良好的性能 -
好吧,从
x的类型开始?然后你就会知道如何使用foldr