Data.Array不提供Array类型的折叠。
在 Real World Haskell(第 12 章)中,据说原因是Arrays 可以根据程序员的需要以不同的方式折叠:
首先,有几种折叠是有意义的。我们可能仍然想要折叠单个元素,但我们现在也可以折叠行或列。最重要的是,对于一次元素折叠,不再只有两个序列用于遍历。
这不正是Lists 的真实情况吗?用多维 s 表示例如矩阵是很常见的List,但仍然为一维Lists 定义了折叠。
我缺少什么微妙之处?是多维与s 的Array一个足够不同吗?ArrayArray
编辑:嗯,即使是多维数组也确实以 .[0] 实例的形式定义了折叠,Data.Foldable那么这如何与 Real World Haskell 引用相匹配?
[0] http://hackage.haskell.org/packages/archive/base/4.6.0.0/doc/html/Data-Foldable.html