Data.Array
的{{3}}读取:
Haskell提供可索引的数组,可以认为是 其域与同义的子集同构的函数 整数。可以实现以这种方式限制的功能 有效率的;特别是,程序员可能合理地期望快速 访问组件。
我想知道(!)
和(//)
的速度有多快。我可以期待O(1)的复杂性,就像我从他们的命令式对手那里得到的那样吗?
答案 0 :(得分:5)
一般来说,是的,你应该可以期待来自!
的O(1),虽然我不确定标准是否保证了这一点。
如果您想要更快的数组(通过使用流融合),您可能希望看到矢量包。它的设计也更好。
请注意,//
可能是O(n),因为它必须遍历列表(就像命令式程序一样)。如果您需要大量突变,可以使用MArray
或MVector
。