git.iko.soy/distributed-process
on master help sign in
Avoid the use of staticClosure
f4ac12aEdsko de Vries
distributed-process-demos/src/MapReduce/CountWords.hs+5−3
@@ -8,7 +8,6 @@ module CountWords
8
8
9import Control.Distributed.Process
9import Control.Distributed.Process
10import Control.Distributed.Process.Closure
10import Control.Distributed.Process.Closure
11−import Control.Distributed.Static (staticClosure)
12import MapReduce hiding (__remoteTable)
11import MapReduce hiding (__remoteTable)
13
12
14type Document = String
13type Document = String
@@ -30,12 +29,15 @@ dictIn = SerializableDict
30dictOut :: SerializableDict [(Word, Frequency)]
29dictOut :: SerializableDict [(Word, Frequency)]
31dictOut = SerializableDict
30dictOut = SerializableDict
32
31
32+countWords_ :: () -> MapReduce FilePath Document Word Frequency Frequency
33+countWords_ () = countWords
34+
33−remotable ['dictIn, 'dictOut, 'countWords]
35+remotable ['dictIn, 'dictOut, 'countWords_]
34
36
35distrCountWords :: [NodeId] -> Map FilePath Document -> Process (Map Word Frequency)
37distrCountWords :: [NodeId] -> Map FilePath Document -> Process (Map Word Frequency)
36distrCountWords mappers input =
38distrCountWords mappers input =
37 distrMapReduce $(mkStatic 'dictIn)
39 distrMapReduce $(mkStatic 'dictIn)
38 $(mkStatic 'dictOut)
40 $(mkStatic 'dictOut)
39− (staticClosure $(mkStatic 'countWords))
41+ ($(mkClosure 'countWords_) ())
40 mappers
42 mappers
41 (\iteration -> iteration input)
43 (\iteration -> iteration input)