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

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

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

  1. fsum x = ....

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

w1jd8yoj

w1jd8yoj1#

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

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

相关问题