我对 Haskell - Map 中的这种数据类型感到困惑。特别是,有一个函数调用 insert(来自 Data.Map 模块),它允许您将新值附加到 Map 数据结构。所以,这是我的困惑。如果 haskell 数据结构是不可变,那么如何将新数据插入到现有的 Map 数据结构中?
最佳答案
insert
实际上并不修改输入Map
。它返回一个新Map
,其中包含与原始Map
相同的条目,以及您要插入的条目。
不过,在幕后,编译器实际上可能不必将所有旧条目复制到新的 Map
中;如果它确定没有其他东西正在使用输入Map
,则它可以重用原始 map 。不变性是语言的一个属性,不一定是该语言的实现。
关于Haskell 不可变数据结构 - Map 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879057/