Control.Parallel.Strategies
参考
「並列性」を単純なコンビネータとして利用できる感覚が掴める
code:hs
type Strategy a = a -> Eval a
並行性の評価戦略としての「Strategy」
並列性を入れるだけで、結果自体は使用の前後で差異はない
例えば、以下の2つのコードは結果は同じ
前者の方は並列に計算される
code:hs
(fib 35, fib 36) using parPair
code:hs
(fib 35, fib 35)
「並列性のモジュール化」を上手く実現しているmrsekut.icon
ちなみに
parPair :: Strategy (a, b)
using :: a -> Strategy a -> a
例えば、以下2つのコードの結果は同じ
code:hs
map f xs using parList rseq
code:hs
map f xs
全く評価しないことを明示する関数
rparWith :: Strategy a -> Strategy a
rparWith sは、Strategy sをrparで包んだもの