Dictionary 如何在Haskell中将assocs与HashMap结合使用
目前我正在尝试使用Map的assocs方法,但无法弄清楚如何让它在HashMap中工作。对于常规贴图,以下操作非常有效Dictionary 如何在Haskell中将assocs与HashMap结合使用,dictionary,haskell,Dictionary,Haskell,目前我正在尝试使用Map的assocs方法,但无法弄清楚如何让它在HashMap中工作。对于常规贴图,以下操作非常有效 import qualified Data.Map as M test = M.fromList [("a", 1), ("b", 2)] M.assocs test 然而,当我尝试用HashMap做同样的事情时,它不起作用。我尝试了几种不同的导入方法,但都因不同的错误而失败。然而奇怪的是,大多数其他在地图上工作的函数在下面的导入中工作得很好,例如,我使用M.lookup i
import qualified Data.Map as M
test = M.fromList [("a", 1), ("b", 2)]
M.assocs test
然而,当我尝试用HashMap做同样的事情时,它不起作用。我尝试了几种不同的导入方法,但都因不同的错误而失败。然而奇怪的是,大多数其他在地图上工作的函数在下面的导入中工作得很好,例如,我使用M.lookup
import qualified Data.HashMap.Lazy as M
test = M.fromList [("a", 1), ("b", 2)]
M.assocs test
如果有用,上述代码将给出以下错误:
<interactive>:1:1: error:
Not in scope: ‘M.assocs’
No module named ‘M’ is imported.
:1:1:错误:
不在范围内:“M.assocs”
未导入名为“M”的模块。
Data.HashMap.Lazy来自无序容器,不导出assocs
函数
您可能会想到
Data.HashMap
来自HashMap
包。Data.HashMap.Lazy来自无序容器,不导出assocs
函数
您可能在想
HashMap
包中的Data.HashMap
。我找到了答案。在Data.HashMap.Lazy中,方法toList
执行与assocs
相同的功能。因此,下面的代码是有效的
import qualified Data.HashMap.Lazy as M
test = M.fromList [("a", 1), ("b", 2)]
M.toList test
我找到了答案。在Data.HashMap.Lazy中,方法
toList
执行与assocs
相同的功能。因此,下面的代码是有效的
import qualified Data.HashMap.Lazy as M
test = M.fromList [("a", 1), ("b", 2)]
M.toList test
我尝试导入Data.HashMap,但该包似乎不存在,即使Data.HashMap.Lazy确实存在。所以我仍然有点困惑,到底应该如何解决这个问题。我假设惰性版本将更加高效,那么我是否需要实现我自己的assocs方法来完成完全相同的事情?如果您想要导入
数据.HashMap
,那么安装它所在的包-cabal安装HashMap
(或者使用您选择的打包系统)。如果您想继续使用无序容器中的模块,例如Data.HashMap.{Strict,Lazy}
,那么您需要创建自己的assocs
方法。我不能说lazy模块是否对您更有效-这取决于具体情况。因此,lazy包中的toList方法与assocs做了相同的事情。我提交了这个作为我自己的答案,因为我觉得它更准确地解决了问题,然后需要重写assocs。我尝试导入Data.HashMap,但该包似乎不存在,即使Data.HashMap.Lazy确实存在。所以我仍然有点困惑,到底应该如何解决这个问题。我假设惰性版本将更加高效,那么我是否需要实现我自己的assocs方法来完成完全相同的事情?如果您想要导入数据.HashMap
,那么安装它所在的包-cabal安装HashMap
(或者使用您选择的打包系统)。如果您想继续使用无序容器中的模块,例如Data.HashMap.{Strict,Lazy}
,那么您需要创建自己的assocs
方法。我不能说lazy模块是否对您更有效-这取决于具体情况。因此,lazy包中的toList方法与assocs做了相同的事情。我提交了这个作为我自己的答案,因为我觉得它更准确地解决了问题,然后需要重写assocs。然而,它在这里:啊,对不起,你使用了懒惰version@StéphaneLaurent yea发现在懒惰版本中有一个toLists方法,它与assocs.Strange做相同的事情。我一直称这个函数为“toList”。“我还以为你在找别的东西呢!”杰弗里斯他们中的一个似乎维护了秩序。我在医生的某个地方见过。否则,事实上,这里也是这样:啊,对不起,你用懒惰的人version@StéphaneLaurent yea发现在懒惰版本中有一个toLists方法,它与assocs.Strange做相同的事情。我一直称这个函数为“toList”。“我还以为你在找别的东西呢!”杰弗里斯他们中的一个似乎维护了秩序。我在医生的某个地方见过。否则事实上也是如此