/usr/share/doc/libghc-parallel-doc/html/Control-Parallel.html is in libghc-parallel-doc 3.2.1.0-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Control.Parallel</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="file:///usr/share/javascript/mathjax/MathJax.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Control-Parallel.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Control-Parallel.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">parallel-3.2.1.0: Parallel programming library</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(c) The University of Glasgow 2001</td></tr><tr><th>License</th><td>BSD-style (see the file libraries/base/LICENSE)</td></tr><tr><th>Maintainer</th><td>libraries@haskell.org</td></tr><tr><th>Stability</th><td>stable</td></tr><tr><th>Portability</th><td>portable</td></tr><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Control.Parallel</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Parallel Constructs</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:par">par</a> :: a -> b -> b</li><li class="src short"><a href="#v:pseq">pseq</a> :: a -> b -> b</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:par" class="def">par</a> :: a -> b -> b <span class="fixity">infixr 0</span><span class="rightedge"></span> <a href="src/Control-Parallel.html#par" class="link">Source</a> <a href="#v:par" class="selflink">#</a></p><div class="doc"><p>Indicates that it may be beneficial to evaluate the first
argument in parallel with the second. Returns the value of the
second argument.</p><p><code>a `<code><a href="Control-Parallel.html#v:par">par</a></code>` b</code> is exactly equivalent semantically to <code>b</code>.</p><p><code>par</code> is generally used when the value of <code>a</code> is likely to be
required later, but not immediately. Also it is a good idea to
ensure that <code>a</code> is not a trivial computation, otherwise the cost of
spawning it in parallel overshadows the benefits obtained by
running it in parallel.</p><p>Note that actual parallelism is only supported by certain
implementations (GHC with the <code>-threaded</code> option, and GPH, for
now). On other implementations, <code>par a b = b</code>.</p></div></div><div class="top"><p class="src"><a id="v:pseq" class="def">pseq</a> :: a -> b -> b <span class="fixity">infixr 0</span><span class="rightedge"></span> <a href="src/Control-Parallel.html#pseq" class="link">Source</a> <a href="#v:pseq" class="selflink">#</a></p><div class="doc"><p>Semantically identical to <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#v:seq">seq</a></code>, but with a subtle operational
difference: <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#v:seq">seq</a></code> is strict in both its arguments, so the compiler
may, for example, rearrange <code>a `<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#v:seq">seq</a></code>` b</code> into <code>b `<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#v:seq">seq</a></code>` a `<code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#v:seq">seq</a></code>` b</code>.
This is normally no problem when using <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#v:seq">seq</a></code> to express strictness,
but it can be a problem when annotating code for parallelism,
because we need more control over the order of evaluation; we may
want to evaluate <code>a</code> before <code>b</code>, because we know that <code>b</code> has
already been sparked in parallel with <code><a href="Control-Parallel.html#v:par">par</a></code>.</p><p>This is why we have <code><a href="Control-Parallel.html#v:pseq">pseq</a></code>. In contrast to <code><a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Prelude.html#v:seq">seq</a></code>, <code><a href="Control-Parallel.html#v:pseq">pseq</a></code> is only
strict in its first argument (as far as the compiler is concerned),
which restricts the transformations that the compiler can do, and
ensures that the user can retain control of the evaluation order.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>
|