</indexterm>
<para>GHC implements some major extensions to Haskell to support
- concurrent and parallel programming. Let us first etablish terminology:
+ concurrent and parallel programming. Let us first establish terminology:
<itemizedlist>
<listitem><para><emphasis>Parallelism</emphasis> means running
a Haskell program on multiple processors, with the goal of improving
url="http://research.microsoft.com/copyright/accept.asp?path=/users/simonpj/papers/concurrent-haskell.ps.gz">
Concurrent Haskell paper</ulink> is still an excellent
resource, as is <ulink
- url="http://research.microsoft.com/%7Esimonpj/papers/marktoberdorf">Tackling
+ url="http://research.microsoft.com/%7Esimonpj/papers/marktoberdorf/">Tackling
the awkward squad</ulink>.
</para><para>
To the programmer, Concurrent Haskell introduces no new language constructs;
linkend="concurrent-haskell"/>), but the simplest mechanism for extracting parallelism from pure code is
to use the <literal>par</literal> combinator, which is closely related to (and often used
with) <literal>seq</literal>. Both of these are available from <ulink
- url="../libraries/base/Control-Parallel.html"><literal>Control.Parallel</literal></ulink>:</para>
+ url="../libraries/parallel/Control-Parallel.html"><literal>Control.Parallel</literal></ulink>:</para>
<programlisting>
infixr 0 `par`
<para>More sophisticated combinators for expressing parallelism are
available from the <ulink
- url="../libraries/base/Control-Parallel-Strategies.html"><literal>Control.Parallel.Strategies</literal></ulink> module.
+ url="../libraries/parallel/Control-Parallel-Strategies.html"><literal>Control.Parallel.Strategies</literal></ulink> module.
This module builds functionality around <literal>par</literal>,
expressing more elaborate patterns of parallel computation, such as
parallel <literal>map</literal>.</para>