Evalモナド
Control.Parallel.Strategiesに定義されている
docs
参考
/mrsekut-book-4873116899/036 (2.2 Evalモナド、rpar、rseq)
Evalモナドの基本操作について
#WIP
並列
methods
rpar
rpar :: a -> Eval a
引数を並列に評価する?
parってなに #??
以下の様に書くとf xとf yを同時に計算し始める
code:hs
runEval $ do
a <- rpar $ f x
b <- rpar $ f y
return (a,b)
aとbの結果を待たずに、return (a,b)を返す
JSのPromise.allっぽいmrsekut.icon
rseq
rseq :: a -> Eval a
直列の評価を強制する
古い実装ではseq関数を使っている
seqのdocsにも書いている通り順番を規定しないのなら、この定義はおかしくなるはず
seqの方の内部実装が途中で変わったのかな?
https://hackage.haskell.org/package/parallel-3.2.2.0/docs/src/Control.Parallel.Strategies.html#rseq
JSのawaitっぽいmrsekut.icon