如何在haskell中编写fsum可折叠函数


fsum :: (Foldable f, Num a) ⇒ f a → a 

它计算类似容器的数据结构中所有数字的总和。我的问题是,我无法将f a定义为列表或Maybe或任何其他可折叠类型以进行访问。所以我想我应该写

fsum x = ....

但我不知道如何折叠它,因为a不是一个monoid。有什么意见吗?提前感谢

这已经在评论中得到了回答。但这里有一些示例代码:

main = do
putStrLn $ show $ fsum [0,1,2]
putStrLn $ show $ fsum (Just 4)
fsum :: (Foldable f, Num a) => f a -> a 
fsum = foldr (+) 0

最新更新