[Haskell-cafe] monadic MapReduce

Manlio Perillo manlio_perillo at libero.it
Sun Mar 1 13:25:56 EST 2009


I have a function that do some IO (take a file path, read the file, 
parse, and return some data), and I would like to parallelize it, so 
that multiple files can be parsed in parallel.

I would like to use the simple mapReduce function,
from Real Word Haskell:

mapReduce :: Strategy b    -- evaluation strategy for mapping
           -> (a -> b)      -- map function
           -> Strategy c    -- evaluation strategy for reduction
           -> ([b] -> c)    -- reduce function
           -> [a]           -- list to map over
           -> c

mapReduce mapStrat mapFunc reduceStrat reduceFunc input =
     mapResult `pseq` reduceResult
   where mapResult    = parMap mapStrat mapFunc input
         reduceResult = reduceFunc mapResult `using` reduceStrat

Is this possible?

Thanks  Manlio Perillo

More information about the Haskell-Cafe mailing list