在Haskell中迭代数组

6

我的问题是,我需要遍历数组并根据每个元素计算某个值。我正在寻找一些类似于fold的数组函数,但标准库似乎在处理数组方面非常无用。或者我漏掉了什么?

另一个解决方案可能是将数组“绑定”到列表上。绑定意味着我不想复制该数组。这可能吗?

顺便说一下,这全部都关于普通数组。

3个回答

8

请查看Data.Foldable。它定义了一个类型类,可以完全满足您的需求。


2
使用Data.Foldable,您可以像列表一样foldr/foldl一个Array。 另一个选择是使用elemsArray转换回列表,然后对该列表进行foldrfoldl

很不幸,这个数组非常大,因此使用elems需要太长时间。 - qba

1
你正在使用哪种数组类型?你可以尝试在索引空间上执行foldM。
或者使用其中一个直接支持folds的数组库(如uvector)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接