Это сомнение относительно параллельных стратегий и parMap
(Control.Parallel.Strategies)параллельно parMap и стратегии
Это о parMap rseq
эквивалентности с parMap rpar
.
С parMap
использует parList
, он оценивается параллельно, поэтому с использованием rseq
или rpar
будет оцениваться параллельно с WHNF. Не так ли?
Update:
С
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
, который дает:
rpar . runEval . 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
является избыточным, поскольку он генерирует две искры для каждого проходящего элемента. !!