在 Haskell 中使用 map 的正确方法是什么? 假设我想要类似的东西
import qualified Data.Map as M
type Key1 = String
type MyMap1 = M.Map Key1 Int
type Key = String
type MyMap = M.Map Key MyMap1
我应该如何实现向 map 添加元素的功能? 我能想到的最好的是
addE :: Key -> Key1 -> Int -> MyMap -> MyMap
addE k k1 v = M.insertWith M.union k (M.singleton k1 v)
但是 M.union
给了我 O(n) 复杂度,而不是预期的 O(log n)
是否有更好的方法来执行此操作或应该使用其他数据结构?
最佳答案
addE :: Key -> Key1 -> Int -> MyMap -> MyMap
addE k k1 v = M.alter (Just . M.insert k1 v . fromMaybe M.empty) k
关于haskell - 在 Haskell 中修改 Map of Maps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28971336/