Eval Monad
在 Haskell 并行可以使用 Eval
单子从表达 Control.Parallel.Strategies
,使用(等等)的 rpar
和 rseq
功能。
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
将立即执行并返回,而 a
和 b
这两个值在后台通过 rpar
计算。
注意:确保使用 -threaded
进行编译以进行并行执行。