それは並列戦略やparMap
(Control.Parallel.Strategies)についての疑問です並列parMapと戦略
それはparMap rpar
で約parMap rseq
同値です。
parMap
はparList
を使用しているため、rseq
またはrpar
のいずれかを使用すると、WHNFと並行して評価されます。ではない ?
更新:
rpar . runEval . rseq
を:
parMap strat f = (`using` parList strat) . map f
parList = parTraversable
parTraversable strat = evalTraversable (rpar `dot` strat)
evalTraversable = traverse
strat2 `dot` strat1 = strat2 . runEval . strat1
parMap rseq
ので
が与える戦略
rpar `dot` rseq
を使用
与える:
(\x -> x `par` return x) . runEval . (\x -> x `pseq` return x)
結果を考えることは困難です。
更新:
なるほど、遅延評価は、第一の組成物の第一の機能をとり、トラバース容器内のすべての要素が平行のためにスパークする
(\x -> x `par` return x)
グラント可能であれば計算。
だから我々は(RPAR dot
RSEQ)は(RSEQ dot
RPAR)と等価であることを追加することができ、そうではありませんか?
そして、parMap rpar
は、トラバース可能な要素ごとに2つのスパークを生成する点で冗長です。 !!