Dictionary 如何在Haskell中将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

目前我正在尝试使用Map的assocs方法,但无法弄清楚如何让它在HashMap中工作。对于常规贴图,以下操作非常有效

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”。“我还以为你在找别的东西呢!”杰弗里斯他们中的一个似乎维护了秩序。我在医生的某个地方见过。否则事实上也是如此