hxt-8.2.0: doc/hdoc/src/Control-Arrow-ArrowNF.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
<title>Haskell Code by HsColour</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='comment'>-- ------------------------------------------------------------</span>
<a name="line-2"></a>
<a name="line-3"></a><span class='comment'>{- |
<a name="line-4"></a> Module : Control.Arrow.ArrowNF
<a name="line-5"></a> Copyright : Copyright (C) 2005-8 Uwe Schmidt
<a name="line-6"></a> License : MIT
<a name="line-7"></a>
<a name="line-8"></a> Maintainer : Uwe Schmidt (uwe\@fh-wedel.de)
<a name="line-9"></a> Stability : experimental
<a name="line-10"></a> Portability: non-portable
<a name="line-11"></a>
<a name="line-12"></a> Arrows for evaluation of normal form results
<a name="line-13"></a>
<a name="line-14"></a>-}</span>
<a name="line-15"></a>
<a name="line-16"></a><span class='comment'>-- ------------------------------------------------------------</span>
<a name="line-17"></a>
<a name="line-18"></a><span class='keyword'>module</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span><span class='varop'>.</span><span class='conid'>ArrowNF</span>
<a name="line-19"></a><span class='keyword'>where</span>
<a name="line-20"></a>
<a name="line-21"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Arrow</span>
<a name="line-22"></a><span class='keyword'>import</span> <span class='conid'>Control</span><span class='varop'>.</span><span class='conid'>Parallel</span><span class='varop'>.</span><span class='conid'>Strategies</span>
<a name="line-23"></a>
<a name="line-24"></a><span class='comment'>-- |</span>
<a name="line-25"></a><span class='comment'>-- complete evaluation of an arrow result using 'Control.Parallel.Strategies.rnf'</span>
<a name="line-26"></a><span class='comment'>--</span>
<a name="line-27"></a><span class='comment'>-- this is sometimes useful for preventing space leaks, especially after reading</span>
<a name="line-28"></a><span class='comment'>-- and validation of a document, all DTD stuff is not longer in use and can be</span>
<a name="line-29"></a><span class='comment'>-- recycled by the GC.</span>
<a name="line-30"></a>
<a name="line-31"></a><a name="strictA"></a><span class='definition'>strictA</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>Arrow</span> <span class='varid'>a</span><span class='layout'>,</span> <span class='conid'>NFData</span> <span class='varid'>b</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='varid'>b</span> <span class='varid'>b</span>
<a name="line-32"></a><span class='definition'>strictA</span> <span class='keyglyph'>=</span> <span class='varid'>arr</span> <span class='varop'>$</span> <span class='keyglyph'>\</span> <span class='varid'>x</span> <span class='keyglyph'>-></span> <span class='varid'>x</span> <span class='varop'>`demanding`</span> <span class='varid'>rnf</span> <span class='varid'>x</span>
<a name="line-33"></a>
<a name="line-34"></a><a name="ArrowNF"></a><span class='keyword'>class</span> <span class='layout'>(</span><span class='conid'>Arrow</span> <span class='varid'>a</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='conid'>ArrowNF</span> <span class='varid'>a</span> <span class='keyword'>where</span>
<a name="line-35"></a> <span class='varid'>rnfA</span> <span class='keyglyph'>::</span> <span class='layout'>(</span><span class='conid'>NFData</span> <span class='varid'>c</span><span class='layout'>)</span> <span class='keyglyph'>=></span> <span class='varid'>a</span> <span class='varid'>b</span> <span class='varid'>c</span> <span class='keyglyph'>-></span> <span class='varid'>a</span> <span class='varid'>b</span> <span class='varid'>c</span>
<a name="line-36"></a> <span class='varid'>rnfA</span> <span class='varid'>f</span> <span class='keyglyph'>=</span> <span class='varid'>f</span> <span class='varop'>>>></span> <span class='varid'>strictA</span>
</pre></body>
</html>