我会直截了当地说 - 有没有办法在 Haskell 中拥有一个动态大小的恒定时间访问数据结构,就像任何其他命令式语言中的数组一样?
我确信某处有一个模块可以为我们神奇地做到这一点,但我希望能对人们如何以一种功能性的方式做到这一点有一个一般性的解释:)
据我所知,Map
使用二叉树表示,因此它具有O(log(n))
访问时间,并且列表当然具有O(n)
访问时间。
此外,如果我们让它不可变,它就会是纯的,对吧?
有什么想法可以解决这个问题(除了Array = Array { one :: Int, two :: Int, three :: Int ...}
模板 Haskell 等)吗?