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