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 進行編譯以進行並行執行。