Parallel Evaluation Strategies, or Strategies for short, provide ways
to express parallel computations. Strategies have the following key
features:
- Strategies express deterministic parallelism: the result of
the program is unaffected by evaluating in parallel. The parallel
tasks evaluated by a Strategy may have no side effects. For
non-deterministic parallel programming, see
Control.Concurrent.
- Strategies let you separate the description of the parallelism
from the logic of your program, enabling modular parallelism. The
basic idea is to build a lazy data structure representing the
computation, and then write a Strategy that describes how to traverse
the data structure and evaluate components of it sequentially or in
parallel.
- Strategies are compositional: larger strategies can be
built by gluing together smaller ones.
- Monad and Applicative instances are provided, for
quickly building strategies that involve traversing structures in a
regular way.
For API history and changes in this release, see
Control.Parallel.Strategies#history.