Parallel Evaluation Strategies, or Strategies for short, specify
a way to evaluate a structure with components in sequence or in
parallel. Strategies are for expressing deterministic
parallelism: the result of the program is unaffected by
evaluating in parallel. For non-deterministic parallel
programming, see Control.Concurrent. Strategies let you separate
the description of parallelism from the logic of your program,
enabling modular parallelism. The original Strategies design is
described in http://www.macs.hw.ac.uk/~dsg/gph/papers/html/Strat
egies/strategies.html and the code was written by Phil Trinder,
Hans-Wolfgang Loidl, Kevin Hammond et al. Later, during work on
the shared-memory implementation of parallelism in GHC, we
discovered that the original formulation of Strategies had some
problems, in particular it lead to space leaks and difficulties
expressing speculative parallelism. Details are in the paper
"Runtime Support for Multicore Haskell"
http://www.haskell.org/~simonmar/papers/multicore-ghc.pdf.