2013-10-29 4 views
5

HaskellHashMap의 구현이 있지만 병렬 버전을 찾을 수 없습니다. 아래 문제를 해결할 필요가 있습니다.haskell의 병렬 해시 맵

말, 나는이 HashMaps을 HashMap a b, 나는 지금은 unionWith 기능을 사용하여, 조건 조합을 원하는,하지만 문제는 내 a 키의 동등성이 매우 긴 절차는 (그것이 그래프)으로 사용할 수있을 것입니다. 그래서 나는 그것을 병렬로 수행하고 싶다. 내가 어떻게 해?

답변

1

주위에 HashMap을 만든 다음 Control.Parallel을 사용하여 원하는대로 평행 인 새 Eq 인스턴스를 정의 할 수 있습니다. 불행히도 모든 코드를 스스로 작성해야 할 것입니다.

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 인스턴스를 쓸 수 있지만, 병렬로 각 노드의 평등을 평가하기 매우 간단해야한다.