我的问题是我需要迭代数组并根据每个元素计算一些值。我正在为数组寻找类似折叠的函数,但标准库似乎对数组非常无用。或者我错过了什么?
另一个解决方案可能是将数组“绑定”到列表中。绑定意味着我不想复制该数组。这可能吗?
顺便说一句,这一切都与普通阵列有关。
答案 0 :(得分:8)
前几天我恰好碰到了这篇文章:Folding Arrays
答案 1 :(得分:8)
看看Data.Foldable。它定义了一个完全符合您要求的类型类。
答案 2 :(得分:2)
使用Data.Foldable
,foldr
/ foldl
和Array
就像您可以列出一样。
另一个选择是,您可以将Array
转换回包含elems
的列表,然后将foldr
或foldl
转换回列表。
答案 3 :(得分:1)
您使用的是哪种数组类型?您可以在索引空间上折叠。
或者使用其中一个直接支持折叠的数组库(uvector)。