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