Control.Parallel.Strategies
hackage
参考
/mrsekut-book-4873116899/052 (3章 評価戦略)
Control.Parallel.Strategiesが提供する関数同士の組み合わせのパターンなど
「並列性」を単純なコンビネータとして利用できる感覚が掴める
#WIP
Strategy型
code:hs
type Strategy a = a -> Eval a
並行性の評価戦略としての「Strategy」
/mrsekut-book-4873116899/052 (3章 評価戦略)らへんの説明がしっくり来るmrsekut.icon
並列性を入れるだけで、結果自体は使用の前後で差異はない
例えば、以下の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
r0関数
全く評価しないことを明示する関数
https://hackage.haskell.org/package/parallel-3.2.2.0/docs/Control-Parallel-Strategies.html#v:r0
/mrsekut-book-4873116899/055
rparWith
/mrsekut-book-4873116899/054
rparWith :: Strategy a -> Strategy a
rparWith sは、Strategy sをrparで包んだもの