有一个HashMap
, in的实现Haskell
,但我找不到它的并行版本。有必要解决下面的问题。
说,我有两个 hashmaps HashMap a b
,我想将它与条件联合,现在我使用unionWith
函数,但问题是我的a
键的等价过程很长(它是一个图表)。所以我想并行执行它。我该怎么做?
有一个HashMap
, in的实现Haskell
,但我找不到它的并行版本。有必要解决下面的问题。
说,我有两个 hashmaps HashMap a b
,我想将它与条件联合,现在我使用unionWith
函数,但问题是我的a
键的等价过程很长(它是一个图表)。所以我想并行执行它。我该怎么做?
您可以创建一个newtype
around HashMap
,然后定义一个新的Eq
实例,该实例与您喜欢使用的一样并行Control.Parallel
。不幸的是,您必须自己编写所有代码,我认为没有任何开箱即用的并行实现。
import Control.Parallel
newtype ParHashMap k v = ParHashMap { unPar :: HashMap k v }
instance (Eq k, Eq v) => Eq (ParHashMap k v) where
ParHashMap hm1 == ParHashMap hm2 = ...
我不确定HashMap
您使用的是哪个(我推荐unordered-containers
),所以我无法编写Eq
实例,但并行评估每个节点的相等性应该相当简单。