【发布时间】:2009-11-16 17:22:28
【问题描述】:
我的问题是我需要遍历数组并根据每个元素计算一些值。我一直在为数组寻找一些类似折叠的函数,但标准库似乎对数组非常无用。还是我错过了什么?
另一种解决方案可能是将数组“绑定”到列表。绑定意味着我不想复制该数组。这可能吗?
顺便说一句,这都是关于普通数组的。
【问题讨论】:
我的问题是我需要遍历数组并根据每个元素计算一些值。我一直在为数组寻找一些类似折叠的函数,但标准库似乎对数组非常无用。还是我错过了什么?
另一种解决方案可能是将数组“绑定”到列表。绑定意味着我不想复制该数组。这可能吗?
顺便说一句,这都是关于普通数组的。
【问题讨论】:
看看Data.Foldable。它定义了一个完全符合您要求的类型类。
【讨论】:
使用Data.Foldable,您可以使用foldr/foldl 和Array,就像使用列表一样。
另一种选择是您可以将Array 转换回带有elems 的列表,然后在列表上方使用foldr 或foldl。
【讨论】:
您使用的是哪种数组类型?您可以只在索引空间上折叠 M。
或者使用直接支持折叠的数组库之一(uvector)。
【讨论】: