Eval Monad

在 Haskell 并行可以使用 Eval 单子从表达 Control.Parallel.Strategies ,使用(等等)的 rparrseq 功能。

f1 :: [Int]
f1 = [1..100000000]

f2 :: [Int]
f2 = [1..200000000]

main = runEval $ do
  a <- rpar (f1) -- this'll take a while...
  b <- rpar (f2) -- this'll take a while and then some...
  return (a,b)

上面运行 main 将立即执行并返回,而 ab 这两个值在后台通过 rpar 计算。

注意:确保使用 -threaded 进行编译以进行并行执行。