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

c9qzyr3d  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(120)
fsum :: (Foldable f, Num a) ⇒ f a → a

它计算一个类似容器的数据结构中所有数字的总和。我的问题是我不能将f a定义为列表或Maybe或任何其他可折叠类型来访问。

fsum x = ....

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

w1jd8yoj

w1jd8yoj1#

这个问题已经在注解中得到了解答。下面是一些示例代码:

main = do
  putStrLn $ show $ fsum [0,1,2]
  putStrLn $ show $ fsum (Just 4)

fsum :: (Foldable f, Num a) => f a -> a 
fsum = foldr (+) 0

相关问题