为什么无序容器有自己的Array实现

Mas*_*sse 1 haskell data-structures

我正在阅读HAMT,并查看了无序容器中的参考实现,但注意到它们有自己的数组实现.为什么是这样?是速度吗?或者它是否需要一些自定义API?

Chr*_*icz 7

看完代码后,我可以看到一些优化.它不支持大多数Haskell阵列具有的"Ix"索引转换.它有专门的原语,例如insert'插入到中间并动态调整数组大小,STArray不支持,以及delete'缩小数组.

所以答案是速度和自定义API.