2013-10-29 19 views
5

有一個HashMap的實現,在Haskell中,但我無法找到它的並行版本。有必要解決下面的問題。haskell中的並行散列表

說,我有兩個包含HashMap HashMap a b,我想與條件的工會吧,現在我用unionWith功能,但問題是,我a鍵的等價很長的過程(這是一個圖)。所以我想要並行執行它。我該怎麼做?

回答

1

您可以創建一個newtype周圍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 = ... 

我不知道你使用(我推薦unordered-containers)的HashMap,所以我不能寫Eq實例,但它應該是相當簡單的評價並行的每個節點的平等。