5

有一个HashMap, in的实现Haskell,但我找不到它的并行版本。有必要解决下面的问题。

说,我有两个 hashmaps HashMap a b,我想将它与条件联合,现在我使用unionWith函数,但问题是我的a键的等价过程很长(它是一个图表)。所以我想并行执行它。我该怎么做?

4

1 回答 1

1

您可以创建一个newtypearound 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实例,但并行评估每个节点的相等性应该相当简单。

于 2013-10-29T15:42:54.827 回答