Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > f9b127c02f56e71454a7233185e51eb4 > files > 993

ghc-base-devel-4.3.1.0-16.fc15.i686.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!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>dist-install/build/autogen/GHC/Prim.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>{-
<a name="line-2"></a>This is a generated file (generated by genprimopcode).
<a name="line-3"></a>It is not code to actually be used. Its only purpose is to be
<a name="line-4"></a>consumed by haddock.
<a name="line-5"></a>-}</span>
<a name="line-6"></a>
<a name="line-7"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-8"></a><span class='hs-comment'>-- |</span>
<a name="line-9"></a><span class='hs-comment'>-- Module      :  GHC.Prim</span>
<a name="line-10"></a><span class='hs-comment'>-- </span>
<a name="line-11"></a><span class='hs-comment'>-- Maintainer  :  cvs-ghc@haskell.org</span>
<a name="line-12"></a><span class='hs-comment'>-- Stability   :  internal</span>
<a name="line-13"></a><span class='hs-comment'>-- Portability :  non-portable (GHC extensions)</span>
<a name="line-14"></a><span class='hs-comment'>--</span>
<a name="line-15"></a><span class='hs-comment'>-- GHC's primitive types and operations.</span>
<a name="line-16"></a><span class='hs-comment'>-- Use GHC.Exts from the base package instead of importing this</span>
<a name="line-17"></a><span class='hs-comment'>-- module directly.</span>
<a name="line-18"></a><span class='hs-comment'>--</span>
<a name="line-19"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-20"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Prim</span> <span class='hs-layout'>(</span>
<a name="line-21"></a>	
<a name="line-22"></a><span class='hs-comment'>-- * The word size story.</span>
<a name="line-23"></a><span class='hs-comment'>-- |Haskell98 specifies that signed integers (type @Int@)</span>
<a name="line-24"></a><span class='hs-comment'>-- 	 must contain at least 30 bits. GHC always implements @Int@ using the primitive type @Int\#@, whose size equals</span>
<a name="line-25"></a><span class='hs-comment'>-- 	 the @MachDeps.h@ constant @WORD\_SIZE\_IN\_BITS@.</span>
<a name="line-26"></a><span class='hs-comment'>-- 	 This is normally set based on the @config.h@ parameter</span>
<a name="line-27"></a><span class='hs-comment'>-- 	 @SIZEOF\_HSWORD@, i.e., 32 bits on 32-bit machines, 64</span>
<a name="line-28"></a><span class='hs-comment'>-- 	 bits on 64-bit machines.  However, it can also be explicitly</span>
<a name="line-29"></a><span class='hs-comment'>-- 	 set to a smaller number, e.g., 31 bits, to allow the</span>
<a name="line-30"></a><span class='hs-comment'>-- 	 possibility of using tag bits. Currently GHC itself has only</span>
<a name="line-31"></a><span class='hs-comment'>-- 	 32-bit and 64-bit variants, but 30 or 31-bit code can be</span>
<a name="line-32"></a><span class='hs-comment'>-- 	 exported as an external core file for use in other back ends.</span>
<a name="line-33"></a><span class='hs-comment'>-- </span>
<a name="line-34"></a><span class='hs-comment'>-- 	 GHC also implements a primitive unsigned integer type @Word\#@ which always has the same number of bits as @Int\#@.</span>
<a name="line-35"></a><span class='hs-comment'>-- 	</span>
<a name="line-36"></a><span class='hs-comment'>-- 	 In addition, GHC supports families of explicit-sized integers</span>
<a name="line-37"></a><span class='hs-comment'>-- 	 and words at 8, 16, 32, and 64 bits, with the usual</span>
<a name="line-38"></a><span class='hs-comment'>-- 	 arithmetic operations, comparisons, and a range of</span>
<a name="line-39"></a><span class='hs-comment'>-- 	 conversions.  The 8-bit and 16-bit sizes are always</span>
<a name="line-40"></a><span class='hs-comment'>-- 	 represented as @Int\#@ and @Word\#@, and the</span>
<a name="line-41"></a><span class='hs-comment'>-- 	 operations implemented in terms of the the primops on these</span>
<a name="line-42"></a><span class='hs-comment'>-- 	 types, with suitable range restrictions on the results (using</span>
<a name="line-43"></a><span class='hs-comment'>-- 	 the @narrow$n$Int\#@ and @narrow$n$Word\#@ families</span>
<a name="line-44"></a><span class='hs-comment'>-- 	 of primops.  The 32-bit sizes are represented using @Int\#@ and @Word\#@ when @WORD\_SIZE\_IN\_BITS@</span>
<a name="line-45"></a><span class='hs-comment'>-- 	 $\geq$ 32; otherwise, these are represented using distinct</span>
<a name="line-46"></a><span class='hs-comment'>-- 	 primitive types @Int32\#@ and @Word32\#@. These (when</span>
<a name="line-47"></a><span class='hs-comment'>-- 	 needed) have a complete set of corresponding operations;</span>
<a name="line-48"></a><span class='hs-comment'>-- 	 however, nearly all of these are implemented as external C</span>
<a name="line-49"></a><span class='hs-comment'>-- 	 functions rather than as primops.  Exactly the same story</span>
<a name="line-50"></a><span class='hs-comment'>-- 	 applies to the 64-bit sizes.  All of these details are hidden</span>
<a name="line-51"></a><span class='hs-comment'>-- 	 under the @PrelInt@ and @PrelWord@ modules, which use</span>
<a name="line-52"></a><span class='hs-comment'>-- 	 @\#if@-defs to invoke the appropriate types and</span>
<a name="line-53"></a><span class='hs-comment'>-- 	 operators.</span>
<a name="line-54"></a><span class='hs-comment'>-- </span>
<a name="line-55"></a><span class='hs-comment'>-- 	 Word size also matters for the families of primops for</span>
<a name="line-56"></a><span class='hs-comment'>-- 	 indexing\/reading\/writing fixed-size quantities at offsets</span>
<a name="line-57"></a><span class='hs-comment'>-- 	 from an array base, address, or foreign pointer.  Here, a</span>
<a name="line-58"></a><span class='hs-comment'>-- 	 slightly different approach is taken.  The names of these</span>
<a name="line-59"></a><span class='hs-comment'>-- 	 primops are fixed, but their /types/ vary according to</span>
<a name="line-60"></a><span class='hs-comment'>-- 	 the value of @WORD\_SIZE\_IN\_BITS@. For example, if word</span>
<a name="line-61"></a><span class='hs-comment'>-- 	 size is at least 32 bits then an operator like</span>
<a name="line-62"></a><span class='hs-comment'>-- 	 @indexInt32Array\#@ has type @ByteArray\# -&gt; Int\# 	 -&gt; Int\#@; otherwise it has type @ByteArray\# -&gt; Int\# -&gt; 	 Int32\#@.  This approach confines the necessary @\#if@-defs to this file; no conditional compilation is needed</span>
<a name="line-63"></a><span class='hs-comment'>-- 	 in the files that expose these primops.</span>
<a name="line-64"></a><span class='hs-comment'>-- </span>
<a name="line-65"></a><span class='hs-comment'>-- 	 Finally, there are strongly deprecated primops for coercing</span>
<a name="line-66"></a><span class='hs-comment'>--          between @Addr\#@, the primitive type of machine</span>
<a name="line-67"></a><span class='hs-comment'>--          addresses, and @Int\#@.  These are pretty bogus anyway,</span>
<a name="line-68"></a><span class='hs-comment'>--          but will work on existing 32-bit and 64-bit GHC targets; they</span>
<a name="line-69"></a><span class='hs-comment'>--          are completely bogus when tag bits are used in @Int\#@,</span>
<a name="line-70"></a><span class='hs-comment'>--          so are not available in this case.  </span>
<a name="line-71"></a>
<a name="line-72"></a>
<a name="line-73"></a>	
<a name="line-74"></a><span class='hs-comment'>-- * Char#</span>
<a name="line-75"></a><span class='hs-comment'>-- |Operations on 31-bit characters.</span>
<a name="line-76"></a>
<a name="line-77"></a>
<a name="line-78"></a>	<span class='hs-conid'>Char</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-79"></a>	<span class='hs-varid'>gtChar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-80"></a>	<span class='hs-varid'>geChar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-81"></a>	<span class='hs-varid'>eqChar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-82"></a>	<span class='hs-varid'>neChar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-83"></a>	<span class='hs-varid'>ltChar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-84"></a>	<span class='hs-varid'>leChar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-85"></a>	<span class='hs-varid'>ord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-86"></a>	
<a name="line-87"></a><span class='hs-comment'>-- * Int#</span>
<a name="line-88"></a><span class='hs-comment'>-- |Operations on native-size integers (30+ bits).</span>
<a name="line-89"></a>
<a name="line-90"></a>
<a name="line-91"></a>	<span class='hs-conid'>Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-92"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>+#</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-93"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>-#</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-94"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>*#</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-95"></a>	<span class='hs-varid'>mulIntMayOflo</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-96"></a>	<span class='hs-varid'>quotInt</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-97"></a>	<span class='hs-varid'>remInt</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-98"></a>	<span class='hs-varid'>negateInt</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-99"></a>	<span class='hs-varid'>addIntC</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-100"></a>	<span class='hs-varid'>subIntC</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-101"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>&gt;#</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-102"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>&gt;=#</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-103"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>==#</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-104"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>/=#</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-105"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>&lt;#</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-106"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>&lt;=#</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-107"></a>	<span class='hs-varid'>chr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-108"></a>	<span class='hs-varid'>int2Word</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-109"></a>	<span class='hs-varid'>int2Float</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-110"></a>	<span class='hs-varid'>int2Double</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-111"></a>	<span class='hs-varid'>uncheckedIShiftL</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-112"></a>	<span class='hs-varid'>uncheckedIShiftRA</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-113"></a>	<span class='hs-varid'>uncheckedIShiftRL</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-114"></a>	
<a name="line-115"></a><span class='hs-comment'>-- * Word#</span>
<a name="line-116"></a><span class='hs-comment'>-- |Operations on native-sized unsigned words (30+ bits).</span>
<a name="line-117"></a>
<a name="line-118"></a>
<a name="line-119"></a>	<span class='hs-conid'>Word</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-120"></a>	<span class='hs-varid'>plusWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-121"></a>	<span class='hs-varid'>minusWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-122"></a>	<span class='hs-varid'>timesWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-123"></a>	<span class='hs-varid'>quotWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-124"></a>	<span class='hs-varid'>remWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-125"></a>	<span class='hs-varid'>and</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-126"></a>	<span class='hs-varid'>or</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-127"></a>	<span class='hs-varid'>xor</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-128"></a>	<span class='hs-varid'>not</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-129"></a>	<span class='hs-varid'>uncheckedShiftL</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-130"></a>	<span class='hs-varid'>uncheckedShiftRL</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-131"></a>	<span class='hs-varid'>word2Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-132"></a>	<span class='hs-varid'>gtWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-133"></a>	<span class='hs-varid'>geWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-134"></a>	<span class='hs-varid'>eqWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-135"></a>	<span class='hs-varid'>neWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-136"></a>	<span class='hs-varid'>ltWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-137"></a>	<span class='hs-varid'>leWord</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-138"></a>	
<a name="line-139"></a><span class='hs-comment'>-- * Narrowings</span>
<a name="line-140"></a><span class='hs-comment'>-- |Explicit narrowing of native-sized ints or words.</span>
<a name="line-141"></a>
<a name="line-142"></a>
<a name="line-143"></a>	<span class='hs-varid'>narrow8Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-144"></a>	<span class='hs-varid'>narrow16Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-145"></a>	<span class='hs-varid'>narrow32Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-146"></a>	<span class='hs-varid'>narrow8Word</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-147"></a>	<span class='hs-varid'>narrow16Word</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-148"></a>	<span class='hs-varid'>narrow32Word</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-149"></a>	
<a name="line-150"></a><span class='hs-comment'>-- * Int64#</span>
<a name="line-151"></a><span class='hs-comment'>-- |Operations on 64-bit unsigned words. This type is only used </span>
<a name="line-152"></a><span class='hs-comment'>-- 	 if plain @Int\#@ has less than 64 bits. In any case, the operations</span>
<a name="line-153"></a><span class='hs-comment'>-- 	 are not primops; they are implemented (if needed) as ccalls instead.</span>
<a name="line-154"></a>
<a name="line-155"></a>
<a name="line-156"></a>	<span class='hs-conid'>Int64</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-157"></a>	
<a name="line-158"></a><span class='hs-comment'>-- * Word64#</span>
<a name="line-159"></a><span class='hs-comment'>-- |Operations on 64-bit unsigned words. This type is only used </span>
<a name="line-160"></a><span class='hs-comment'>-- 	 if plain @Word\#@ has less than 64 bits. In any case, the operations</span>
<a name="line-161"></a><span class='hs-comment'>-- 	 are not primops; they are implemented (if needed) as ccalls instead.</span>
<a name="line-162"></a>
<a name="line-163"></a>
<a name="line-164"></a>	<span class='hs-conid'>Word64</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-165"></a>	
<a name="line-166"></a><span class='hs-comment'>-- * Double#</span>
<a name="line-167"></a><span class='hs-comment'>-- |Operations on double-precision (64 bit) floating-point numbers.</span>
<a name="line-168"></a>
<a name="line-169"></a>
<a name="line-170"></a>	<span class='hs-conid'>Double</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-171"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>&gt;##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-172"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>&gt;=##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-173"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>==##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-174"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>/=##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-175"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>&lt;##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-176"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>&lt;=##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-177"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>+##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-178"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>-##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-179"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>*##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-180"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>/##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-181"></a>	<span class='hs-varid'>negateDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-182"></a>	<span class='hs-varid'>double2Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-183"></a>	<span class='hs-varid'>double2Float</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-184"></a>	<span class='hs-varid'>expDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-185"></a>	<span class='hs-varid'>logDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-186"></a>	<span class='hs-varid'>sqrtDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-187"></a>	<span class='hs-varid'>sinDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-188"></a>	<span class='hs-varid'>cosDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-189"></a>	<span class='hs-varid'>tanDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-190"></a>	<span class='hs-varid'>asinDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-191"></a>	<span class='hs-varid'>acosDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-192"></a>	<span class='hs-varid'>atanDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-193"></a>	<span class='hs-varid'>sinhDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-194"></a>	<span class='hs-varid'>coshDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-195"></a>	<span class='hs-varid'>tanhDouble</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-196"></a>	<span class='hs-layout'>(</span><span class='hs-varop'>**##</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-197"></a>	<span class='hs-varid'>decodeDouble_2Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-198"></a>	
<a name="line-199"></a><span class='hs-comment'>-- * Float#</span>
<a name="line-200"></a><span class='hs-comment'>-- |Operations on single-precision (32-bit) floating-point numbers.</span>
<a name="line-201"></a>
<a name="line-202"></a>
<a name="line-203"></a>	<span class='hs-conid'>Float</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-204"></a>	<span class='hs-varid'>gtFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-205"></a>	<span class='hs-varid'>geFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-206"></a>	<span class='hs-varid'>eqFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-207"></a>	<span class='hs-varid'>neFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-208"></a>	<span class='hs-varid'>ltFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-209"></a>	<span class='hs-varid'>leFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-210"></a>	<span class='hs-varid'>plusFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-211"></a>	<span class='hs-varid'>minusFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-212"></a>	<span class='hs-varid'>timesFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-213"></a>	<span class='hs-varid'>divideFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-214"></a>	<span class='hs-varid'>negateFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-215"></a>	<span class='hs-varid'>float2Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-216"></a>	<span class='hs-varid'>expFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-217"></a>	<span class='hs-varid'>logFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-218"></a>	<span class='hs-varid'>sqrtFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-219"></a>	<span class='hs-varid'>sinFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-220"></a>	<span class='hs-varid'>cosFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-221"></a>	<span class='hs-varid'>tanFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-222"></a>	<span class='hs-varid'>asinFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-223"></a>	<span class='hs-varid'>acosFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-224"></a>	<span class='hs-varid'>atanFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-225"></a>	<span class='hs-varid'>sinhFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-226"></a>	<span class='hs-varid'>coshFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-227"></a>	<span class='hs-varid'>tanhFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-228"></a>	<span class='hs-varid'>powerFloat</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-229"></a>	<span class='hs-varid'>float2Double</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-230"></a>	<span class='hs-varid'>decodeFloat_Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-231"></a>	
<a name="line-232"></a><span class='hs-comment'>-- * Arrays</span>
<a name="line-233"></a><span class='hs-comment'>-- |Operations on @Array\#@.</span>
<a name="line-234"></a>
<a name="line-235"></a>
<a name="line-236"></a>	<span class='hs-conid'>Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-237"></a>	<span class='hs-conid'>MutableArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-238"></a>	<span class='hs-varid'>newArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-239"></a>	<span class='hs-varid'>sameMutableArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-240"></a>	<span class='hs-varid'>readArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-241"></a>	<span class='hs-varid'>writeArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-242"></a>	<span class='hs-varid'>indexArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-243"></a>	<span class='hs-varid'>unsafeFreezeArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-244"></a>	<span class='hs-varid'>unsafeThawArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-245"></a>	
<a name="line-246"></a><span class='hs-comment'>-- * Byte Arrays</span>
<a name="line-247"></a><span class='hs-comment'>-- |Operations on @ByteArray\#@. A @ByteArray\#@ is a just a region of</span>
<a name="line-248"></a><span class='hs-comment'>--          raw memory in the garbage-collected heap, which is not</span>
<a name="line-249"></a><span class='hs-comment'>--          scanned for pointers. It carries its own size (in bytes).</span>
<a name="line-250"></a><span class='hs-comment'>--          There are</span>
<a name="line-251"></a><span class='hs-comment'>--          three sets of operations for accessing byte array contents:</span>
<a name="line-252"></a><span class='hs-comment'>--          index for reading from immutable byte arrays, and read\/write</span>
<a name="line-253"></a><span class='hs-comment'>--          for mutable byte arrays.  Each set contains operations for a</span>
<a name="line-254"></a><span class='hs-comment'>--          range of useful primitive data types.  Each operation takes</span>
<a name="line-255"></a><span class='hs-comment'>--          an offset measured in terms of the size fo the primitive type</span>
<a name="line-256"></a><span class='hs-comment'>--          being read or written.</span>
<a name="line-257"></a>
<a name="line-258"></a>
<a name="line-259"></a>	<span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-260"></a>	<span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-261"></a>	<span class='hs-varid'>newByteArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-262"></a>	<span class='hs-varid'>newPinnedByteArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-263"></a>	<span class='hs-varid'>newAlignedPinnedByteArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-264"></a>	<span class='hs-varid'>byteArrayContents</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-265"></a>	<span class='hs-varid'>sameMutableByteArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-266"></a>	<span class='hs-varid'>unsafeFreezeByteArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-267"></a>	<span class='hs-varid'>sizeofByteArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-268"></a>	<span class='hs-varid'>sizeofMutableByteArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-269"></a>	<span class='hs-varid'>indexCharArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-270"></a>	<span class='hs-varid'>indexWideCharArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-271"></a>	<span class='hs-varid'>indexIntArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-272"></a>	<span class='hs-varid'>indexWordArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-273"></a>	<span class='hs-varid'>indexAddrArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-274"></a>	<span class='hs-varid'>indexFloatArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-275"></a>	<span class='hs-varid'>indexDoubleArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-276"></a>	<span class='hs-varid'>indexStablePtrArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-277"></a>	<span class='hs-varid'>indexInt8Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-278"></a>	<span class='hs-varid'>indexInt16Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-279"></a>	<span class='hs-varid'>indexInt32Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-280"></a>	<span class='hs-varid'>indexInt64Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-281"></a>	<span class='hs-varid'>indexWord8Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-282"></a>	<span class='hs-varid'>indexWord16Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-283"></a>	<span class='hs-varid'>indexWord32Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-284"></a>	<span class='hs-varid'>indexWord64Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-285"></a>	<span class='hs-varid'>readCharArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-286"></a>	<span class='hs-varid'>readWideCharArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-287"></a>	<span class='hs-varid'>readIntArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-288"></a>	<span class='hs-varid'>readWordArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-289"></a>	<span class='hs-varid'>readAddrArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-290"></a>	<span class='hs-varid'>readFloatArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-291"></a>	<span class='hs-varid'>readDoubleArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-292"></a>	<span class='hs-varid'>readStablePtrArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-293"></a>	<span class='hs-varid'>readInt8Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-294"></a>	<span class='hs-varid'>readInt16Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-295"></a>	<span class='hs-varid'>readInt32Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-296"></a>	<span class='hs-varid'>readInt64Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-297"></a>	<span class='hs-varid'>readWord8Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-298"></a>	<span class='hs-varid'>readWord16Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-299"></a>	<span class='hs-varid'>readWord32Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-300"></a>	<span class='hs-varid'>readWord64Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-301"></a>	<span class='hs-varid'>writeCharArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-302"></a>	<span class='hs-varid'>writeWideCharArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-303"></a>	<span class='hs-varid'>writeIntArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-304"></a>	<span class='hs-varid'>writeWordArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-305"></a>	<span class='hs-varid'>writeAddrArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-306"></a>	<span class='hs-varid'>writeFloatArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-307"></a>	<span class='hs-varid'>writeDoubleArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-308"></a>	<span class='hs-varid'>writeStablePtrArray</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-309"></a>	<span class='hs-varid'>writeInt8Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-310"></a>	<span class='hs-varid'>writeInt16Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-311"></a>	<span class='hs-varid'>writeInt32Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-312"></a>	<span class='hs-varid'>writeInt64Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-313"></a>	<span class='hs-varid'>writeWord8Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-314"></a>	<span class='hs-varid'>writeWord16Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-315"></a>	<span class='hs-varid'>writeWord32Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-316"></a>	<span class='hs-varid'>writeWord64Array</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-317"></a>	
<a name="line-318"></a><span class='hs-comment'>-- * Addr#</span>
<a name="line-319"></a><span class='hs-comment'>-- |</span>
<a name="line-320"></a>
<a name="line-321"></a>
<a name="line-322"></a>	<span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-323"></a>	<span class='hs-varid'>nullAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-324"></a>	<span class='hs-varid'>plusAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-325"></a>	<span class='hs-varid'>minusAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-326"></a>	<span class='hs-varid'>remAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-327"></a>	<span class='hs-varid'>addr2Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-328"></a>	<span class='hs-varid'>int2Addr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-329"></a>	<span class='hs-varid'>gtAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-330"></a>	<span class='hs-varid'>geAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-331"></a>	<span class='hs-varid'>eqAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-332"></a>	<span class='hs-varid'>neAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-333"></a>	<span class='hs-varid'>ltAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-334"></a>	<span class='hs-varid'>leAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-335"></a>	<span class='hs-varid'>indexCharOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-336"></a>	<span class='hs-varid'>indexWideCharOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-337"></a>	<span class='hs-varid'>indexIntOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-338"></a>	<span class='hs-varid'>indexWordOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-339"></a>	<span class='hs-varid'>indexAddrOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-340"></a>	<span class='hs-varid'>indexFloatOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-341"></a>	<span class='hs-varid'>indexDoubleOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-342"></a>	<span class='hs-varid'>indexStablePtrOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-343"></a>	<span class='hs-varid'>indexInt8OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-344"></a>	<span class='hs-varid'>indexInt16OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-345"></a>	<span class='hs-varid'>indexInt32OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-346"></a>	<span class='hs-varid'>indexInt64OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-347"></a>	<span class='hs-varid'>indexWord8OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-348"></a>	<span class='hs-varid'>indexWord16OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-349"></a>	<span class='hs-varid'>indexWord32OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-350"></a>	<span class='hs-varid'>indexWord64OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-351"></a>	<span class='hs-varid'>readCharOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-352"></a>	<span class='hs-varid'>readWideCharOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-353"></a>	<span class='hs-varid'>readIntOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-354"></a>	<span class='hs-varid'>readWordOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-355"></a>	<span class='hs-varid'>readAddrOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-356"></a>	<span class='hs-varid'>readFloatOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-357"></a>	<span class='hs-varid'>readDoubleOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-358"></a>	<span class='hs-varid'>readStablePtrOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-359"></a>	<span class='hs-varid'>readInt8OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-360"></a>	<span class='hs-varid'>readInt16OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-361"></a>	<span class='hs-varid'>readInt32OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-362"></a>	<span class='hs-varid'>readInt64OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-363"></a>	<span class='hs-varid'>readWord8OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-364"></a>	<span class='hs-varid'>readWord16OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-365"></a>	<span class='hs-varid'>readWord32OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-366"></a>	<span class='hs-varid'>readWord64OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-367"></a>	<span class='hs-varid'>writeCharOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-368"></a>	<span class='hs-varid'>writeWideCharOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-369"></a>	<span class='hs-varid'>writeIntOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-370"></a>	<span class='hs-varid'>writeWordOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-371"></a>	<span class='hs-varid'>writeAddrOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-372"></a>	<span class='hs-varid'>writeFloatOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-373"></a>	<span class='hs-varid'>writeDoubleOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-374"></a>	<span class='hs-varid'>writeStablePtrOffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-375"></a>	<span class='hs-varid'>writeInt8OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-376"></a>	<span class='hs-varid'>writeInt16OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-377"></a>	<span class='hs-varid'>writeInt32OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-378"></a>	<span class='hs-varid'>writeInt64OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-379"></a>	<span class='hs-varid'>writeWord8OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-380"></a>	<span class='hs-varid'>writeWord16OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-381"></a>	<span class='hs-varid'>writeWord32OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-382"></a>	<span class='hs-varid'>writeWord64OffAddr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-383"></a>	
<a name="line-384"></a><span class='hs-comment'>-- * Mutable variables</span>
<a name="line-385"></a><span class='hs-comment'>-- |Operations on MutVar\#s.</span>
<a name="line-386"></a>
<a name="line-387"></a>
<a name="line-388"></a>	<span class='hs-conid'>MutVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-389"></a>	<span class='hs-varid'>newMutVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-390"></a>	<span class='hs-varid'>readMutVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-391"></a>	<span class='hs-varid'>writeMutVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-392"></a>	<span class='hs-varid'>sameMutVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-393"></a>	<span class='hs-varid'>atomicModifyMutVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-394"></a>	
<a name="line-395"></a><span class='hs-comment'>-- * Exceptions</span>
<a name="line-396"></a><span class='hs-comment'>-- |</span>
<a name="line-397"></a>
<a name="line-398"></a>
<a name="line-399"></a>	<span class='hs-varid'>catch</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-400"></a>	<span class='hs-varid'>raise</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-401"></a>	<span class='hs-varid'>raiseIO</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-402"></a>	<span class='hs-varid'>maskAsyncExceptions</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-403"></a>	<span class='hs-varid'>maskUninterruptible</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-404"></a>	<span class='hs-varid'>unmaskAsyncExceptions</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-405"></a>	<span class='hs-varid'>getMaskingState</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-406"></a>	
<a name="line-407"></a><span class='hs-comment'>-- * STM-accessible Mutable Variables</span>
<a name="line-408"></a><span class='hs-comment'>-- |</span>
<a name="line-409"></a>
<a name="line-410"></a>
<a name="line-411"></a>	<span class='hs-conid'>TVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-412"></a>	<span class='hs-varid'>atomically</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-413"></a>	<span class='hs-varid'>retry</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-414"></a>	<span class='hs-varid'>catchRetry</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-415"></a>	<span class='hs-varid'>catchSTM</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-416"></a>	<span class='hs-varid'>check</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-417"></a>	<span class='hs-varid'>newTVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-418"></a>	<span class='hs-varid'>readTVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-419"></a>	<span class='hs-varid'>readTVarIO</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-420"></a>	<span class='hs-varid'>writeTVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-421"></a>	<span class='hs-varid'>sameTVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-422"></a>	
<a name="line-423"></a><span class='hs-comment'>-- * Synchronized Mutable Variables</span>
<a name="line-424"></a><span class='hs-comment'>-- |Operations on @MVar\#@s. </span>
<a name="line-425"></a>
<a name="line-426"></a>
<a name="line-427"></a>	<span class='hs-conid'>MVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-428"></a>	<span class='hs-varid'>newMVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-429"></a>	<span class='hs-varid'>takeMVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-430"></a>	<span class='hs-varid'>tryTakeMVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-431"></a>	<span class='hs-varid'>putMVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-432"></a>	<span class='hs-varid'>tryPutMVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-433"></a>	<span class='hs-varid'>sameMVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-434"></a>	<span class='hs-varid'>isEmptyMVar</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-435"></a>	
<a name="line-436"></a><span class='hs-comment'>-- * Delay\/wait operations</span>
<a name="line-437"></a><span class='hs-comment'>-- |</span>
<a name="line-438"></a>
<a name="line-439"></a>
<a name="line-440"></a>	<span class='hs-varid'>delay</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-441"></a>	<span class='hs-varid'>waitRead</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-442"></a>	<span class='hs-varid'>waitWrite</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-443"></a>	
<a name="line-444"></a><span class='hs-comment'>-- * Concurrency primitives</span>
<a name="line-445"></a><span class='hs-comment'>-- |</span>
<a name="line-446"></a>
<a name="line-447"></a>
<a name="line-448"></a>	<span class='hs-conid'>State</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-449"></a>	<span class='hs-conid'>RealWorld</span><span class='hs-layout'>,</span>
<a name="line-450"></a>	<span class='hs-conid'>ThreadId</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-451"></a>	<span class='hs-varid'>fork</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-452"></a>	<span class='hs-varid'>forkOn</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-453"></a>	<span class='hs-varid'>killThread</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-454"></a>	<span class='hs-varid'>yield</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-455"></a>	<span class='hs-varid'>myThreadId</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-456"></a>	<span class='hs-varid'>labelThread</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-457"></a>	<span class='hs-varid'>isCurrentThreadBound</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-458"></a>	<span class='hs-varid'>noDuplicate</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-459"></a>	<span class='hs-varid'>threadStatus</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-460"></a>	
<a name="line-461"></a><span class='hs-comment'>-- * Weak pointers</span>
<a name="line-462"></a><span class='hs-comment'>-- |</span>
<a name="line-463"></a>
<a name="line-464"></a>
<a name="line-465"></a>	<span class='hs-conid'>Weak</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-466"></a>	<span class='hs-varid'>mkWeak</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-467"></a>	<span class='hs-varid'>mkWeakForeignEnv</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-468"></a>	<span class='hs-varid'>deRefWeak</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-469"></a>	<span class='hs-varid'>finalizeWeak</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-470"></a>	<span class='hs-varid'>touch</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-471"></a>	
<a name="line-472"></a><span class='hs-comment'>-- * Stable pointers and names</span>
<a name="line-473"></a><span class='hs-comment'>-- |</span>
<a name="line-474"></a>
<a name="line-475"></a>
<a name="line-476"></a>	<span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-477"></a>	<span class='hs-conid'>StableName</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-478"></a>	<span class='hs-varid'>makeStablePtr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-479"></a>	<span class='hs-varid'>deRefStablePtr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-480"></a>	<span class='hs-varid'>eqStablePtr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-481"></a>	<span class='hs-varid'>makeStableName</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-482"></a>	<span class='hs-varid'>eqStableName</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-483"></a>	<span class='hs-varid'>stableNameToInt</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-484"></a>	
<a name="line-485"></a><span class='hs-comment'>-- * Unsafe pointer equality</span>
<a name="line-486"></a><span class='hs-comment'>-- |</span>
<a name="line-487"></a>
<a name="line-488"></a>
<a name="line-489"></a>	<span class='hs-varid'>reallyUnsafePtrEquality</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-490"></a>	
<a name="line-491"></a><span class='hs-comment'>-- * Parallelism</span>
<a name="line-492"></a><span class='hs-comment'>-- |</span>
<a name="line-493"></a>
<a name="line-494"></a>
<a name="line-495"></a>	<span class='hs-varid'>par</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-496"></a>	<span class='hs-varid'>getSpark</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-497"></a>	<span class='hs-varid'>numSparks</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-498"></a>	<span class='hs-varid'>parGlobal</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-499"></a>	<span class='hs-varid'>parLocal</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-500"></a>	<span class='hs-varid'>parAt</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-501"></a>	<span class='hs-varid'>parAtAbs</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-502"></a>	<span class='hs-varid'>parAtRel</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-503"></a>	<span class='hs-varid'>parAtForNow</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-504"></a>	
<a name="line-505"></a><span class='hs-comment'>-- * Tag to enum stuff</span>
<a name="line-506"></a><span class='hs-comment'>-- |Convert back and forth between values of enumerated types</span>
<a name="line-507"></a><span class='hs-comment'>-- 	and small integers.</span>
<a name="line-508"></a>
<a name="line-509"></a>
<a name="line-510"></a>	<span class='hs-varid'>dataToTag</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-511"></a>	<span class='hs-varid'>tagToEnum</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-512"></a>	
<a name="line-513"></a><span class='hs-comment'>-- * Bytecode operations</span>
<a name="line-514"></a><span class='hs-comment'>-- |Support for the bytecode interpreter and linker.</span>
<a name="line-515"></a>
<a name="line-516"></a>
<a name="line-517"></a>	<span class='hs-conid'>BCO</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-518"></a>	<span class='hs-varid'>addrToHValue</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-519"></a>	<span class='hs-varid'>mkApUpd0</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-520"></a>	<span class='hs-varid'>newBCO</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-521"></a>	<span class='hs-varid'>unpackClosure</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-522"></a>	<span class='hs-varid'>getApStackVal</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-523"></a>	
<a name="line-524"></a><span class='hs-comment'>-- * Misc</span>
<a name="line-525"></a><span class='hs-comment'>-- |These aren\'t nearly as wired in as Etc...</span>
<a name="line-526"></a>
<a name="line-527"></a>
<a name="line-528"></a>	<span class='hs-varid'>traceCcs</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-529"></a>	
<a name="line-530"></a><span class='hs-comment'>-- * Etc</span>
<a name="line-531"></a><span class='hs-comment'>-- |Miscellaneous built-ins</span>
<a name="line-532"></a>
<a name="line-533"></a>
<a name="line-534"></a>	<span class='hs-varid'>seq</span><span class='hs-layout'>,</span>
<a name="line-535"></a>	<span class='hs-varid'>inline</span><span class='hs-layout'>,</span>
<a name="line-536"></a>	<span class='hs-varid'>lazy</span><span class='hs-layout'>,</span>
<a name="line-537"></a>	<span class='hs-conid'>Any</span><span class='hs-layout'>,</span>
<a name="line-538"></a>	<span class='hs-varid'>unsafeCoerce</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-539"></a>	<span class='hs-varid'>traceEvent</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span>
<a name="line-540"></a><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-541"></a>
<a name="line-542"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Bool</span>
<a name="line-543"></a>
<a name="line-544"></a><span class='hs-comment'>{-
<a name="line-545"></a>has_side_effects = False
<a name="line-546"></a>out_of_line = False
<a name="line-547"></a>commutable = False
<a name="line-548"></a>needs_wrapper = False
<a name="line-549"></a>can_fail = False
<a name="line-550"></a>strictness = {  \ arity -&gt; mkStrictSig (mkTopDmdType (replicate arity lazyDmd) TopRes) }
<a name="line-551"></a>-}</span>
<a name="line-552"></a>
<a name="line-553"></a><a name="Char"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span>
<a name="line-554"></a>
<a name="line-555"></a><a name="gtChar"></a><span class='hs-definition'>gtChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-556"></a><span class='hs-definition'>gtChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-557"></a>
<a name="line-558"></a><a name="geChar"></a><span class='hs-definition'>geChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-559"></a><span class='hs-definition'>geChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-560"></a>
<a name="line-561"></a><a name="eqChar"></a><span class='hs-definition'>eqChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-562"></a><span class='hs-definition'>eqChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-563"></a>
<a name="line-564"></a><a name="neChar"></a><span class='hs-definition'>neChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-565"></a><span class='hs-definition'>neChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-566"></a>
<a name="line-567"></a><a name="ltChar"></a><span class='hs-definition'>ltChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-568"></a><span class='hs-definition'>ltChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-569"></a>
<a name="line-570"></a><a name="leChar"></a><span class='hs-definition'>leChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-571"></a><span class='hs-definition'>leChar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-572"></a>
<a name="line-573"></a><a name="ord"></a><span class='hs-definition'>ord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-574"></a><span class='hs-definition'>ord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-575"></a>
<a name="line-576"></a><a name="Int"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-577"></a>
<a name="line-578"></a><a name="+#"></a><span class='hs-layout'>(</span><span class='hs-varop'>+#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-579"></a><span class='hs-layout'>(</span><span class='hs-varop'>+#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-580"></a>
<a name="line-581"></a><a name="-#"></a><span class='hs-layout'>(</span><span class='hs-varop'>-#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-582"></a><span class='hs-layout'>(</span><span class='hs-varop'>-#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-583"></a>
<a name="line-584"></a><span class='hs-comment'>-- |Low word of signed integer multiply.</span>
<a name="line-585"></a>
<a name="line-586"></a><a name="*#"></a><span class='hs-layout'>(</span><span class='hs-varop'>*#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-587"></a><span class='hs-layout'>(</span><span class='hs-varop'>*#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-588"></a>
<a name="line-589"></a><span class='hs-comment'>-- |Return non-zero if there is any possibility that the upper word of a</span>
<a name="line-590"></a><span class='hs-comment'>--     signed integer multiply might contain useful information.  Return</span>
<a name="line-591"></a><span class='hs-comment'>--     zero only if you are completely sure that no overflow can occur.</span>
<a name="line-592"></a><span class='hs-comment'>--     On a 32-bit platform, the recommmended implementation is to do a </span>
<a name="line-593"></a><span class='hs-comment'>--     32 x 32 -&gt; 64 signed multiply, and subtract result[63:32] from</span>
<a name="line-594"></a><span class='hs-comment'>--     (result[31] &gt;&gt;signed 31).  If this is zero, meaning that the </span>
<a name="line-595"></a><span class='hs-comment'>--     upper word is merely a sign extension of the lower one, no</span>
<a name="line-596"></a><span class='hs-comment'>--     overflow can occur.</span>
<a name="line-597"></a><span class='hs-comment'>-- </span>
<a name="line-598"></a><span class='hs-comment'>--     On a 64-bit platform it is not always possible to </span>
<a name="line-599"></a><span class='hs-comment'>--     acquire the top 64 bits of the result.  Therefore, a recommended </span>
<a name="line-600"></a><span class='hs-comment'>--     implementation is to take the absolute value of both operands, and </span>
<a name="line-601"></a><span class='hs-comment'>--     return 0 iff bits[63:31] of them are zero, since that means that their </span>
<a name="line-602"></a><span class='hs-comment'>--     magnitudes fit within 31 bits, so the magnitude of the product must fit </span>
<a name="line-603"></a><span class='hs-comment'>--     into 62 bits.</span>
<a name="line-604"></a><span class='hs-comment'>-- </span>
<a name="line-605"></a><span class='hs-comment'>--     If in doubt, return non-zero, but do make an effort to create the</span>
<a name="line-606"></a><span class='hs-comment'>--     correct answer for small args, since otherwise the performance of</span>
<a name="line-607"></a><span class='hs-comment'>--     @(*) :: Integer -&gt; Integer -&gt; Integer@ will be poor.</span>
<a name="line-608"></a><span class='hs-comment'>--    </span>
<a name="line-609"></a>
<a name="line-610"></a><a name="mulIntMayOflo"></a><span class='hs-definition'>mulIntMayOflo</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-611"></a><span class='hs-definition'>mulIntMayOflo</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-612"></a>
<a name="line-613"></a><span class='hs-comment'>-- |Rounds towards zero.</span>
<a name="line-614"></a>
<a name="line-615"></a><a name="quotInt"></a><span class='hs-definition'>quotInt</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-616"></a><span class='hs-definition'>quotInt</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-617"></a>
<a name="line-618"></a><span class='hs-comment'>-- |Satisfies @(quotInt\# x y) *\# y +\# (remInt\# x y) == x@.</span>
<a name="line-619"></a>
<a name="line-620"></a><a name="remInt"></a><span class='hs-definition'>remInt</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-621"></a><span class='hs-definition'>remInt</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-622"></a>
<a name="line-623"></a><a name="negateInt"></a><span class='hs-definition'>negateInt</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-624"></a><span class='hs-definition'>negateInt</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-625"></a>
<a name="line-626"></a><span class='hs-comment'>-- |Add with carry.  First member of result is (wrapped) sum; </span>
<a name="line-627"></a><span class='hs-comment'>--           second member is 0 iff no overflow occured.</span>
<a name="line-628"></a>
<a name="line-629"></a><a name="addIntC"></a><span class='hs-definition'>addIntC</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-630"></a><span class='hs-definition'>addIntC</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-631"></a>
<a name="line-632"></a><span class='hs-comment'>-- |Subtract with carry.  First member of result is (wrapped) difference; </span>
<a name="line-633"></a><span class='hs-comment'>--           second member is 0 iff no overflow occured.</span>
<a name="line-634"></a>
<a name="line-635"></a><a name="subIntC"></a><span class='hs-definition'>subIntC</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-636"></a><span class='hs-definition'>subIntC</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-637"></a>
<a name="line-638"></a><a name=">#"></a><span class='hs-layout'>(</span><span class='hs-varop'>&gt;#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-639"></a><span class='hs-layout'>(</span><span class='hs-varop'>&gt;#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-640"></a>
<a name="line-641"></a><a name=">=#"></a><span class='hs-layout'>(</span><span class='hs-varop'>&gt;=#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-642"></a><span class='hs-layout'>(</span><span class='hs-varop'>&gt;=#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-643"></a>
<a name="line-644"></a><a name="==#"></a><span class='hs-layout'>(</span><span class='hs-varop'>==#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-645"></a><span class='hs-layout'>(</span><span class='hs-varop'>==#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-646"></a>
<a name="line-647"></a><a name="/=#"></a><span class='hs-layout'>(</span><span class='hs-varop'>/=#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-648"></a><span class='hs-layout'>(</span><span class='hs-varop'>/=#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-649"></a>
<a name="line-650"></a><a name="<#"></a><span class='hs-layout'>(</span><span class='hs-varop'>&lt;#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-651"></a><span class='hs-layout'>(</span><span class='hs-varop'>&lt;#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-652"></a>
<a name="line-653"></a><a name="<=#"></a><span class='hs-layout'>(</span><span class='hs-varop'>&lt;=#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-654"></a><span class='hs-layout'>(</span><span class='hs-varop'>&lt;=#</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-655"></a>
<a name="line-656"></a><a name="chr"></a><span class='hs-definition'>chr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span>
<a name="line-657"></a><span class='hs-definition'>chr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-658"></a>
<a name="line-659"></a><a name="int2Word"></a><span class='hs-definition'>int2Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-660"></a><span class='hs-definition'>int2Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-661"></a>
<a name="line-662"></a><a name="int2Float"></a><span class='hs-definition'>int2Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-663"></a><span class='hs-definition'>int2Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-664"></a>
<a name="line-665"></a><a name="int2Double"></a><span class='hs-definition'>int2Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-666"></a><span class='hs-definition'>int2Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-667"></a>
<a name="line-668"></a><span class='hs-comment'>-- |Shift left.  Result undefined if shift amount is not</span>
<a name="line-669"></a><span class='hs-comment'>--           in the range 0 to word size - 1 inclusive.</span>
<a name="line-670"></a>
<a name="line-671"></a><a name="uncheckedIShiftL"></a><span class='hs-definition'>uncheckedIShiftL</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-672"></a><span class='hs-definition'>uncheckedIShiftL</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-673"></a>
<a name="line-674"></a><span class='hs-comment'>-- |Shift right arithmetic.  Result undefined if shift amount is not</span>
<a name="line-675"></a><span class='hs-comment'>--           in the range 0 to word size - 1 inclusive.</span>
<a name="line-676"></a>
<a name="line-677"></a><a name="uncheckedIShiftRA"></a><span class='hs-definition'>uncheckedIShiftRA</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-678"></a><span class='hs-definition'>uncheckedIShiftRA</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-679"></a>
<a name="line-680"></a><span class='hs-comment'>-- |Shift right logical.  Result undefined if shift amount is not</span>
<a name="line-681"></a><span class='hs-comment'>--           in the range 0 to word size - 1 inclusive.</span>
<a name="line-682"></a>
<a name="line-683"></a><a name="uncheckedIShiftRL"></a><span class='hs-definition'>uncheckedIShiftRL</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-684"></a><span class='hs-definition'>uncheckedIShiftRL</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-685"></a>
<a name="line-686"></a><a name="Word"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-687"></a>
<a name="line-688"></a><a name="plusWord"></a><span class='hs-definition'>plusWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-689"></a><span class='hs-definition'>plusWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-690"></a>
<a name="line-691"></a><a name="minusWord"></a><span class='hs-definition'>minusWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-692"></a><span class='hs-definition'>minusWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-693"></a>
<a name="line-694"></a><a name="timesWord"></a><span class='hs-definition'>timesWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-695"></a><span class='hs-definition'>timesWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-696"></a>
<a name="line-697"></a><a name="quotWord"></a><span class='hs-definition'>quotWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-698"></a><span class='hs-definition'>quotWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-699"></a>
<a name="line-700"></a><a name="remWord"></a><span class='hs-definition'>remWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-701"></a><span class='hs-definition'>remWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-702"></a>
<a name="line-703"></a><a name="and"></a><span class='hs-definition'>and</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-704"></a><span class='hs-definition'>and</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-705"></a>
<a name="line-706"></a><a name="or"></a><span class='hs-definition'>or</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-707"></a><span class='hs-definition'>or</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-708"></a>
<a name="line-709"></a><a name="xor"></a><span class='hs-definition'>xor</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-710"></a><span class='hs-definition'>xor</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-711"></a>
<a name="line-712"></a><a name="not"></a><span class='hs-definition'>not</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-713"></a><span class='hs-definition'>not</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-714"></a>
<a name="line-715"></a><span class='hs-comment'>-- |Shift left logical.   Result undefined if shift amount is not</span>
<a name="line-716"></a><span class='hs-comment'>--           in the range 0 to word size - 1 inclusive.</span>
<a name="line-717"></a>
<a name="line-718"></a><a name="uncheckedShiftL"></a><span class='hs-definition'>uncheckedShiftL</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-719"></a><span class='hs-definition'>uncheckedShiftL</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-720"></a>
<a name="line-721"></a><span class='hs-comment'>-- |Shift right logical.   Result undefined if shift  amount is not</span>
<a name="line-722"></a><span class='hs-comment'>--           in the range 0 to word size - 1 inclusive.</span>
<a name="line-723"></a>
<a name="line-724"></a><a name="uncheckedShiftRL"></a><span class='hs-definition'>uncheckedShiftRL</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-725"></a><span class='hs-definition'>uncheckedShiftRL</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-726"></a>
<a name="line-727"></a><a name="word2Int"></a><span class='hs-definition'>word2Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-728"></a><span class='hs-definition'>word2Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-729"></a>
<a name="line-730"></a><a name="gtWord"></a><span class='hs-definition'>gtWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-731"></a><span class='hs-definition'>gtWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-732"></a>
<a name="line-733"></a><a name="geWord"></a><span class='hs-definition'>geWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-734"></a><span class='hs-definition'>geWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-735"></a>
<a name="line-736"></a><a name="eqWord"></a><span class='hs-definition'>eqWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-737"></a><span class='hs-definition'>eqWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-738"></a>
<a name="line-739"></a><a name="neWord"></a><span class='hs-definition'>neWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-740"></a><span class='hs-definition'>neWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-741"></a>
<a name="line-742"></a><a name="ltWord"></a><span class='hs-definition'>ltWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-743"></a><span class='hs-definition'>ltWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-744"></a>
<a name="line-745"></a><a name="leWord"></a><span class='hs-definition'>leWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-746"></a><span class='hs-definition'>leWord</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-747"></a>
<a name="line-748"></a><a name="narrow8Int"></a><span class='hs-definition'>narrow8Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-749"></a><span class='hs-definition'>narrow8Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-750"></a>
<a name="line-751"></a><a name="narrow16Int"></a><span class='hs-definition'>narrow16Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-752"></a><span class='hs-definition'>narrow16Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-753"></a>
<a name="line-754"></a><a name="narrow32Int"></a><span class='hs-definition'>narrow32Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-755"></a><span class='hs-definition'>narrow32Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-756"></a>
<a name="line-757"></a><a name="narrow8Word"></a><span class='hs-definition'>narrow8Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-758"></a><span class='hs-definition'>narrow8Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-759"></a>
<a name="line-760"></a><a name="narrow16Word"></a><span class='hs-definition'>narrow16Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-761"></a><span class='hs-definition'>narrow16Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-762"></a>
<a name="line-763"></a><a name="narrow32Word"></a><span class='hs-definition'>narrow32Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-764"></a><span class='hs-definition'>narrow32Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-765"></a>
<a name="line-766"></a><a name="Int64"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Int64</span><span class='hs-cpp'>#</span>
<a name="line-767"></a>
<a name="line-768"></a><a name="Word64"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Word64</span><span class='hs-cpp'>#</span>
<a name="line-769"></a>
<a name="line-770"></a><a name="Double"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-771"></a>
<a name="line-772"></a><a name=">##"></a><span class='hs-layout'>(</span><span class='hs-varop'>&gt;##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-773"></a><span class='hs-layout'>(</span><span class='hs-varop'>&gt;##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-774"></a>
<a name="line-775"></a><a name=">=##"></a><span class='hs-layout'>(</span><span class='hs-varop'>&gt;=##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-776"></a><span class='hs-layout'>(</span><span class='hs-varop'>&gt;=##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-777"></a>
<a name="line-778"></a><a name="==##"></a><span class='hs-layout'>(</span><span class='hs-varop'>==##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-779"></a><span class='hs-layout'>(</span><span class='hs-varop'>==##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-780"></a>
<a name="line-781"></a><a name="/=##"></a><span class='hs-layout'>(</span><span class='hs-varop'>/=##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-782"></a><span class='hs-layout'>(</span><span class='hs-varop'>/=##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-783"></a>
<a name="line-784"></a><a name="<##"></a><span class='hs-layout'>(</span><span class='hs-varop'>&lt;##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-785"></a><span class='hs-layout'>(</span><span class='hs-varop'>&lt;##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-786"></a>
<a name="line-787"></a><a name="<=##"></a><span class='hs-layout'>(</span><span class='hs-varop'>&lt;=##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-788"></a><span class='hs-layout'>(</span><span class='hs-varop'>&lt;=##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-789"></a>
<a name="line-790"></a><a name="+##"></a><span class='hs-layout'>(</span><span class='hs-varop'>+##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-791"></a><span class='hs-layout'>(</span><span class='hs-varop'>+##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-792"></a>
<a name="line-793"></a><a name="-##"></a><span class='hs-layout'>(</span><span class='hs-varop'>-##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-794"></a><span class='hs-layout'>(</span><span class='hs-varop'>-##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-795"></a>
<a name="line-796"></a><a name="*##"></a><span class='hs-layout'>(</span><span class='hs-varop'>*##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-797"></a><span class='hs-layout'>(</span><span class='hs-varop'>*##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-798"></a>
<a name="line-799"></a><a name="/##"></a><span class='hs-layout'>(</span><span class='hs-varop'>/##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-800"></a><span class='hs-layout'>(</span><span class='hs-varop'>/##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-801"></a>
<a name="line-802"></a><a name="negateDouble"></a><span class='hs-definition'>negateDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-803"></a><span class='hs-definition'>negateDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-804"></a>
<a name="line-805"></a><span class='hs-comment'>-- |Truncates a @Double#@ value to the nearest @Int#@.</span>
<a name="line-806"></a><span class='hs-comment'>--     Results are undefined if the truncation if truncation yields</span>
<a name="line-807"></a><span class='hs-comment'>--     a value outside the range of @Int#@.</span>
<a name="line-808"></a>
<a name="line-809"></a><a name="double2Int"></a><span class='hs-definition'>double2Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-810"></a><span class='hs-definition'>double2Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-811"></a>
<a name="line-812"></a><a name="double2Float"></a><span class='hs-definition'>double2Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-813"></a><span class='hs-definition'>double2Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-814"></a>
<a name="line-815"></a><a name="expDouble"></a><span class='hs-definition'>expDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-816"></a><span class='hs-definition'>expDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-817"></a>
<a name="line-818"></a><a name="logDouble"></a><span class='hs-definition'>logDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-819"></a><span class='hs-definition'>logDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-820"></a>
<a name="line-821"></a><a name="sqrtDouble"></a><span class='hs-definition'>sqrtDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-822"></a><span class='hs-definition'>sqrtDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-823"></a>
<a name="line-824"></a><a name="sinDouble"></a><span class='hs-definition'>sinDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-825"></a><span class='hs-definition'>sinDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-826"></a>
<a name="line-827"></a><a name="cosDouble"></a><span class='hs-definition'>cosDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-828"></a><span class='hs-definition'>cosDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-829"></a>
<a name="line-830"></a><a name="tanDouble"></a><span class='hs-definition'>tanDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-831"></a><span class='hs-definition'>tanDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-832"></a>
<a name="line-833"></a><a name="asinDouble"></a><span class='hs-definition'>asinDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-834"></a><span class='hs-definition'>asinDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-835"></a>
<a name="line-836"></a><a name="acosDouble"></a><span class='hs-definition'>acosDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-837"></a><span class='hs-definition'>acosDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-838"></a>
<a name="line-839"></a><a name="atanDouble"></a><span class='hs-definition'>atanDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-840"></a><span class='hs-definition'>atanDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-841"></a>
<a name="line-842"></a><a name="sinhDouble"></a><span class='hs-definition'>sinhDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-843"></a><span class='hs-definition'>sinhDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-844"></a>
<a name="line-845"></a><a name="coshDouble"></a><span class='hs-definition'>coshDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-846"></a><span class='hs-definition'>coshDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-847"></a>
<a name="line-848"></a><a name="tanhDouble"></a><span class='hs-definition'>tanhDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-849"></a><span class='hs-definition'>tanhDouble</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-850"></a>
<a name="line-851"></a><span class='hs-comment'>-- |Exponentiation.</span>
<a name="line-852"></a>
<a name="line-853"></a><a name="**##"></a><span class='hs-layout'>(</span><span class='hs-varop'>**##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-854"></a><span class='hs-layout'>(</span><span class='hs-varop'>**##</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-855"></a>
<a name="line-856"></a><span class='hs-comment'>-- |Convert to integer.</span>
<a name="line-857"></a><span class='hs-comment'>--     First component of the result is -1 or 1, indicating the sign of the</span>
<a name="line-858"></a><span class='hs-comment'>--     mantissa. The next two are the high and low 32 bits of the mantissa</span>
<a name="line-859"></a><span class='hs-comment'>--     respectively, and the last is the exponent.</span>
<a name="line-860"></a>
<a name="line-861"></a><a name="decodeDouble_2Int"></a><span class='hs-definition'>decodeDouble_2Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-conid'>Word</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-conid'>Word</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-862"></a><span class='hs-definition'>decodeDouble_2Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-863"></a>
<a name="line-864"></a><a name="Float"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-865"></a>
<a name="line-866"></a><a name="gtFloat"></a><span class='hs-definition'>gtFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-867"></a><span class='hs-definition'>gtFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-868"></a>
<a name="line-869"></a><a name="geFloat"></a><span class='hs-definition'>geFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-870"></a><span class='hs-definition'>geFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-871"></a>
<a name="line-872"></a><a name="eqFloat"></a><span class='hs-definition'>eqFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-873"></a><span class='hs-definition'>eqFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-874"></a>
<a name="line-875"></a><a name="neFloat"></a><span class='hs-definition'>neFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-876"></a><span class='hs-definition'>neFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-877"></a>
<a name="line-878"></a><a name="ltFloat"></a><span class='hs-definition'>ltFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-879"></a><span class='hs-definition'>ltFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-880"></a>
<a name="line-881"></a><a name="leFloat"></a><span class='hs-definition'>leFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-882"></a><span class='hs-definition'>leFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-883"></a>
<a name="line-884"></a><a name="plusFloat"></a><span class='hs-definition'>plusFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-885"></a><span class='hs-definition'>plusFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-886"></a>
<a name="line-887"></a><a name="minusFloat"></a><span class='hs-definition'>minusFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-888"></a><span class='hs-definition'>minusFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-889"></a>
<a name="line-890"></a><a name="timesFloat"></a><span class='hs-definition'>timesFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-891"></a><span class='hs-definition'>timesFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-892"></a>
<a name="line-893"></a><a name="divideFloat"></a><span class='hs-definition'>divideFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-894"></a><span class='hs-definition'>divideFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-895"></a>
<a name="line-896"></a><a name="negateFloat"></a><span class='hs-definition'>negateFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-897"></a><span class='hs-definition'>negateFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-898"></a>
<a name="line-899"></a><span class='hs-comment'>-- |Truncates a @Float#@ value to the nearest @Int#@.</span>
<a name="line-900"></a><span class='hs-comment'>--     Results are undefined if the truncation if truncation yields</span>
<a name="line-901"></a><span class='hs-comment'>--     a value outside the range of @Int#@.</span>
<a name="line-902"></a>
<a name="line-903"></a><a name="float2Int"></a><span class='hs-definition'>float2Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-904"></a><span class='hs-definition'>float2Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-905"></a>
<a name="line-906"></a><a name="expFloat"></a><span class='hs-definition'>expFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-907"></a><span class='hs-definition'>expFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-908"></a>
<a name="line-909"></a><a name="logFloat"></a><span class='hs-definition'>logFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-910"></a><span class='hs-definition'>logFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-911"></a>
<a name="line-912"></a><a name="sqrtFloat"></a><span class='hs-definition'>sqrtFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-913"></a><span class='hs-definition'>sqrtFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-914"></a>
<a name="line-915"></a><a name="sinFloat"></a><span class='hs-definition'>sinFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-916"></a><span class='hs-definition'>sinFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-917"></a>
<a name="line-918"></a><a name="cosFloat"></a><span class='hs-definition'>cosFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-919"></a><span class='hs-definition'>cosFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-920"></a>
<a name="line-921"></a><a name="tanFloat"></a><span class='hs-definition'>tanFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-922"></a><span class='hs-definition'>tanFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-923"></a>
<a name="line-924"></a><a name="asinFloat"></a><span class='hs-definition'>asinFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-925"></a><span class='hs-definition'>asinFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-926"></a>
<a name="line-927"></a><a name="acosFloat"></a><span class='hs-definition'>acosFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-928"></a><span class='hs-definition'>acosFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-929"></a>
<a name="line-930"></a><a name="atanFloat"></a><span class='hs-definition'>atanFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-931"></a><span class='hs-definition'>atanFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-932"></a>
<a name="line-933"></a><a name="sinhFloat"></a><span class='hs-definition'>sinhFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-934"></a><span class='hs-definition'>sinhFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-935"></a>
<a name="line-936"></a><a name="coshFloat"></a><span class='hs-definition'>coshFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-937"></a><span class='hs-definition'>coshFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-938"></a>
<a name="line-939"></a><a name="tanhFloat"></a><span class='hs-definition'>tanhFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-940"></a><span class='hs-definition'>tanhFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-941"></a>
<a name="line-942"></a><a name="powerFloat"></a><span class='hs-definition'>powerFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-943"></a><span class='hs-definition'>powerFloat</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-944"></a>
<a name="line-945"></a><a name="float2Double"></a><span class='hs-definition'>float2Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-946"></a><span class='hs-definition'>float2Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-947"></a>
<a name="line-948"></a><span class='hs-comment'>-- |Convert to integers.</span>
<a name="line-949"></a><span class='hs-comment'>--     First @Int\#@ in result is the mantissa; second is the exponent.</span>
<a name="line-950"></a>
<a name="line-951"></a><a name="decodeFloat_Int"></a><span class='hs-definition'>decodeFloat_Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-952"></a><span class='hs-definition'>decodeFloat_Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-953"></a>
<a name="line-954"></a><a name="Array"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Array</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span>
<a name="line-955"></a>
<a name="line-956"></a><a name="MutableArray"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>MutableArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span>
<a name="line-957"></a>
<a name="line-958"></a><span class='hs-comment'>-- |Create a new mutable array with the specified number of elements,</span>
<a name="line-959"></a><span class='hs-comment'>--     in the specified state thread,</span>
<a name="line-960"></a><span class='hs-comment'>--     with each element containing the specified initial value.</span>
<a name="line-961"></a>
<a name="line-962"></a><a name="newArray"></a><span class='hs-definition'>newArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>MutableArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-963"></a><span class='hs-definition'>newArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-964"></a>
<a name="line-965"></a><a name="sameMutableArray"></a><span class='hs-definition'>sameMutableArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MutableArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-966"></a><span class='hs-definition'>sameMutableArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-967"></a>
<a name="line-968"></a><span class='hs-comment'>-- |Read from specified index of mutable array. Result is not yet evaluated.</span>
<a name="line-969"></a>
<a name="line-970"></a><a name="readArray"></a><span class='hs-definition'>readArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-971"></a><span class='hs-definition'>readArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-972"></a>
<a name="line-973"></a><span class='hs-comment'>-- |Write to specified index of mutable array.</span>
<a name="line-974"></a>
<a name="line-975"></a><a name="writeArray"></a><span class='hs-definition'>writeArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-976"></a><span class='hs-definition'>writeArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-977"></a>
<a name="line-978"></a><span class='hs-comment'>-- |Read from specified index of immutable array. Result is packaged into</span>
<a name="line-979"></a><span class='hs-comment'>--     an unboxed singleton; the result itself is not yet evaluated.</span>
<a name="line-980"></a>
<a name="line-981"></a><a name="indexArray"></a><span class='hs-definition'>indexArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Array</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-982"></a><span class='hs-definition'>indexArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-983"></a>
<a name="line-984"></a><span class='hs-comment'>-- |Make a mutable array immutable, without copying.</span>
<a name="line-985"></a>
<a name="line-986"></a><a name="unsafeFreezeArray"></a><span class='hs-definition'>unsafeFreezeArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Array</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-987"></a><span class='hs-definition'>unsafeFreezeArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-988"></a>
<a name="line-989"></a><span class='hs-comment'>-- |Make an immutable array mutable, without copying.</span>
<a name="line-990"></a>
<a name="line-991"></a><a name="unsafeThawArray"></a><span class='hs-definition'>unsafeThawArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Array</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>MutableArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-992"></a><span class='hs-definition'>unsafeThawArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-993"></a>
<a name="line-994"></a><a name="ByteArray"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span>
<a name="line-995"></a>
<a name="line-996"></a><a name="MutableByteArray"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-997"></a>
<a name="line-998"></a><span class='hs-comment'>-- |Create a new mutable byte array of specified size (in bytes), in</span>
<a name="line-999"></a><span class='hs-comment'>--     the specified state thread.</span>
<a name="line-1000"></a>
<a name="line-1001"></a><a name="newByteArray"></a><span class='hs-definition'>newByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1002"></a><span class='hs-definition'>newByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1003"></a>
<a name="line-1004"></a><span class='hs-comment'>-- |Create a mutable byte array that the GC guarantees not to move.</span>
<a name="line-1005"></a>
<a name="line-1006"></a><a name="newPinnedByteArray"></a><span class='hs-definition'>newPinnedByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1007"></a><span class='hs-definition'>newPinnedByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1008"></a>
<a name="line-1009"></a><span class='hs-comment'>-- |Create a mutable byte array, aligned by the specified amount, that the GC guarantees not to move.</span>
<a name="line-1010"></a>
<a name="line-1011"></a><a name="newAlignedPinnedByteArray"></a><span class='hs-definition'>newAlignedPinnedByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1012"></a><span class='hs-definition'>newAlignedPinnedByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1013"></a>
<a name="line-1014"></a><span class='hs-comment'>-- |Intended for use with pinned arrays; otherwise very unsafe!</span>
<a name="line-1015"></a>
<a name="line-1016"></a><a name="byteArrayContents"></a><span class='hs-definition'>byteArrayContents</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span>
<a name="line-1017"></a><span class='hs-definition'>byteArrayContents</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1018"></a>
<a name="line-1019"></a><a name="sameMutableByteArray"></a><span class='hs-definition'>sameMutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1020"></a><span class='hs-definition'>sameMutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1021"></a>
<a name="line-1022"></a><span class='hs-comment'>-- |Make a mutable byte array immutable, without copying.</span>
<a name="line-1023"></a>
<a name="line-1024"></a><a name="unsafeFreezeByteArray"></a><span class='hs-definition'>unsafeFreezeByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1025"></a><span class='hs-definition'>unsafeFreezeByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1026"></a>
<a name="line-1027"></a><span class='hs-comment'>-- |Return the size of the array in bytes.</span>
<a name="line-1028"></a>
<a name="line-1029"></a><a name="sizeofByteArray"></a><span class='hs-definition'>sizeofByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1030"></a><span class='hs-definition'>sizeofByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1031"></a>
<a name="line-1032"></a><span class='hs-comment'>-- |Return the size of the array in bytes.</span>
<a name="line-1033"></a>
<a name="line-1034"></a><a name="sizeofMutableByteArray"></a><span class='hs-definition'>sizeofMutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1035"></a><span class='hs-definition'>sizeofMutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1036"></a>
<a name="line-1037"></a><span class='hs-comment'>-- |Read 8-bit character; offset in bytes.</span>
<a name="line-1038"></a>
<a name="line-1039"></a><a name="indexCharArray"></a><span class='hs-definition'>indexCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span>
<a name="line-1040"></a><span class='hs-definition'>indexCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1041"></a>
<a name="line-1042"></a><span class='hs-comment'>-- |Read 31-bit character; offset in 4-byte words.</span>
<a name="line-1043"></a>
<a name="line-1044"></a><a name="indexWideCharArray"></a><span class='hs-definition'>indexWideCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span>
<a name="line-1045"></a><span class='hs-definition'>indexWideCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1046"></a>
<a name="line-1047"></a><a name="indexIntArray"></a><span class='hs-definition'>indexIntArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1048"></a><span class='hs-definition'>indexIntArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1049"></a>
<a name="line-1050"></a><a name="indexWordArray"></a><span class='hs-definition'>indexWordArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-1051"></a><span class='hs-definition'>indexWordArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1052"></a>
<a name="line-1053"></a><a name="indexAddrArray"></a><span class='hs-definition'>indexAddrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span>
<a name="line-1054"></a><span class='hs-definition'>indexAddrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1055"></a>
<a name="line-1056"></a><a name="indexFloatArray"></a><span class='hs-definition'>indexFloatArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-1057"></a><span class='hs-definition'>indexFloatArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1058"></a>
<a name="line-1059"></a><a name="indexDoubleArray"></a><span class='hs-definition'>indexDoubleArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-1060"></a><span class='hs-definition'>indexDoubleArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1061"></a>
<a name="line-1062"></a><a name="indexStablePtrArray"></a><span class='hs-definition'>indexStablePtrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span>
<a name="line-1063"></a><span class='hs-definition'>indexStablePtrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1064"></a>
<a name="line-1065"></a><a name="indexInt8Array"></a><span class='hs-definition'>indexInt8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1066"></a><span class='hs-definition'>indexInt8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1067"></a>
<a name="line-1068"></a><a name="indexInt16Array"></a><span class='hs-definition'>indexInt16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1069"></a><span class='hs-definition'>indexInt16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1070"></a>
<a name="line-1071"></a><a name="indexInt32Array"></a><span class='hs-definition'>indexInt32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1072"></a><span class='hs-definition'>indexInt32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1073"></a>
<a name="line-1074"></a><a name="indexInt64Array"></a><span class='hs-definition'>indexInt64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int64</span><span class='hs-cpp'>#</span>
<a name="line-1075"></a><span class='hs-definition'>indexInt64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1076"></a>
<a name="line-1077"></a><a name="indexWord8Array"></a><span class='hs-definition'>indexWord8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-1078"></a><span class='hs-definition'>indexWord8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1079"></a>
<a name="line-1080"></a><a name="indexWord16Array"></a><span class='hs-definition'>indexWord16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-1081"></a><span class='hs-definition'>indexWord16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1082"></a>
<a name="line-1083"></a><a name="indexWord32Array"></a><span class='hs-definition'>indexWord32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-1084"></a><span class='hs-definition'>indexWord32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1085"></a>
<a name="line-1086"></a><a name="indexWord64Array"></a><span class='hs-definition'>indexWord64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word64</span><span class='hs-cpp'>#</span>
<a name="line-1087"></a><span class='hs-definition'>indexWord64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1088"></a>
<a name="line-1089"></a><span class='hs-comment'>-- |Read 8-bit character; offset in bytes.</span>
<a name="line-1090"></a>
<a name="line-1091"></a><a name="readCharArray"></a><span class='hs-definition'>readCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1092"></a><span class='hs-definition'>readCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1093"></a>
<a name="line-1094"></a><span class='hs-comment'>-- |Read 31-bit character; offset in 4-byte words.</span>
<a name="line-1095"></a>
<a name="line-1096"></a><a name="readWideCharArray"></a><span class='hs-definition'>readWideCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1097"></a><span class='hs-definition'>readWideCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1098"></a>
<a name="line-1099"></a><a name="readIntArray"></a><span class='hs-definition'>readIntArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1100"></a><span class='hs-definition'>readIntArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1101"></a>
<a name="line-1102"></a><a name="readWordArray"></a><span class='hs-definition'>readWordArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1103"></a><span class='hs-definition'>readWordArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1104"></a>
<a name="line-1105"></a><a name="readAddrArray"></a><span class='hs-definition'>readAddrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1106"></a><span class='hs-definition'>readAddrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1107"></a>
<a name="line-1108"></a><a name="readFloatArray"></a><span class='hs-definition'>readFloatArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1109"></a><span class='hs-definition'>readFloatArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1110"></a>
<a name="line-1111"></a><a name="readDoubleArray"></a><span class='hs-definition'>readDoubleArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1112"></a><span class='hs-definition'>readDoubleArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1113"></a>
<a name="line-1114"></a><a name="readStablePtrArray"></a><span class='hs-definition'>readStablePtrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1115"></a><span class='hs-definition'>readStablePtrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1116"></a>
<a name="line-1117"></a><a name="readInt8Array"></a><span class='hs-definition'>readInt8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1118"></a><span class='hs-definition'>readInt8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1119"></a>
<a name="line-1120"></a><a name="readInt16Array"></a><span class='hs-definition'>readInt16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1121"></a><span class='hs-definition'>readInt16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1122"></a>
<a name="line-1123"></a><a name="readInt32Array"></a><span class='hs-definition'>readInt32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1124"></a><span class='hs-definition'>readInt32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1125"></a>
<a name="line-1126"></a><a name="readInt64Array"></a><span class='hs-definition'>readInt64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int64</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1127"></a><span class='hs-definition'>readInt64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1128"></a>
<a name="line-1129"></a><a name="readWord8Array"></a><span class='hs-definition'>readWord8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1130"></a><span class='hs-definition'>readWord8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1131"></a>
<a name="line-1132"></a><a name="readWord16Array"></a><span class='hs-definition'>readWord16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1133"></a><span class='hs-definition'>readWord16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1134"></a>
<a name="line-1135"></a><a name="readWord32Array"></a><span class='hs-definition'>readWord32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1136"></a><span class='hs-definition'>readWord32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1137"></a>
<a name="line-1138"></a><a name="readWord64Array"></a><span class='hs-definition'>readWord64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Word64</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1139"></a><span class='hs-definition'>readWord64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1140"></a>
<a name="line-1141"></a><span class='hs-comment'>-- |Write 8-bit character; offset in bytes.</span>
<a name="line-1142"></a>
<a name="line-1143"></a><a name="writeCharArray"></a><span class='hs-definition'>writeCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1144"></a><span class='hs-definition'>writeCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1145"></a>
<a name="line-1146"></a><span class='hs-comment'>-- |Write 31-bit character; offset in 4-byte words.</span>
<a name="line-1147"></a>
<a name="line-1148"></a><a name="writeWideCharArray"></a><span class='hs-definition'>writeWideCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1149"></a><span class='hs-definition'>writeWideCharArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1150"></a>
<a name="line-1151"></a><a name="writeIntArray"></a><span class='hs-definition'>writeIntArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1152"></a><span class='hs-definition'>writeIntArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1153"></a>
<a name="line-1154"></a><a name="writeWordArray"></a><span class='hs-definition'>writeWordArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1155"></a><span class='hs-definition'>writeWordArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1156"></a>
<a name="line-1157"></a><a name="writeAddrArray"></a><span class='hs-definition'>writeAddrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1158"></a><span class='hs-definition'>writeAddrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1159"></a>
<a name="line-1160"></a><a name="writeFloatArray"></a><span class='hs-definition'>writeFloatArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1161"></a><span class='hs-definition'>writeFloatArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1162"></a>
<a name="line-1163"></a><a name="writeDoubleArray"></a><span class='hs-definition'>writeDoubleArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1164"></a><span class='hs-definition'>writeDoubleArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1165"></a>
<a name="line-1166"></a><a name="writeStablePtrArray"></a><span class='hs-definition'>writeStablePtrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1167"></a><span class='hs-definition'>writeStablePtrArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1168"></a>
<a name="line-1169"></a><a name="writeInt8Array"></a><span class='hs-definition'>writeInt8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1170"></a><span class='hs-definition'>writeInt8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1171"></a>
<a name="line-1172"></a><a name="writeInt16Array"></a><span class='hs-definition'>writeInt16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1173"></a><span class='hs-definition'>writeInt16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1174"></a>
<a name="line-1175"></a><a name="writeInt32Array"></a><span class='hs-definition'>writeInt32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1176"></a><span class='hs-definition'>writeInt32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1177"></a>
<a name="line-1178"></a><a name="writeInt64Array"></a><span class='hs-definition'>writeInt64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int64</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1179"></a><span class='hs-definition'>writeInt64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1180"></a>
<a name="line-1181"></a><a name="writeWord8Array"></a><span class='hs-definition'>writeWord8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1182"></a><span class='hs-definition'>writeWord8Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1183"></a>
<a name="line-1184"></a><a name="writeWord16Array"></a><span class='hs-definition'>writeWord16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1185"></a><span class='hs-definition'>writeWord16Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1186"></a>
<a name="line-1187"></a><a name="writeWord32Array"></a><span class='hs-definition'>writeWord32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1188"></a><span class='hs-definition'>writeWord32Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1189"></a>
<a name="line-1190"></a><a name="writeWord64Array"></a><span class='hs-definition'>writeWord64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutableByteArray</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word64</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1191"></a><span class='hs-definition'>writeWord64Array</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1192"></a>
<a name="line-1193"></a><span class='hs-comment'>-- | An arbitrary machine address assumed to point outside</span>
<a name="line-1194"></a><span class='hs-comment'>-- 	 the garbage-collected heap. </span>
<a name="line-1195"></a>
<a name="line-1196"></a><a name="Addr"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span>
<a name="line-1197"></a>
<a name="line-1198"></a><span class='hs-comment'>-- | The null address. </span>
<a name="line-1199"></a>
<a name="line-1200"></a><a name="nullAddr"></a><span class='hs-definition'>nullAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span>
<a name="line-1201"></a><span class='hs-definition'>nullAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1202"></a>
<a name="line-1203"></a><a name="plusAddr"></a><span class='hs-definition'>plusAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span>
<a name="line-1204"></a><span class='hs-definition'>plusAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1205"></a>
<a name="line-1206"></a><span class='hs-comment'>-- |Result is meaningless if two @Addr\#@s are so far apart that their</span>
<a name="line-1207"></a><span class='hs-comment'>-- 	 difference doesn\'t fit in an @Int\#@.</span>
<a name="line-1208"></a>
<a name="line-1209"></a><a name="minusAddr"></a><span class='hs-definition'>minusAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1210"></a><span class='hs-definition'>minusAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1211"></a>
<a name="line-1212"></a><span class='hs-comment'>-- |Return the remainder when the @Addr\#@ arg, treated like an @Int\#@,</span>
<a name="line-1213"></a><span class='hs-comment'>-- 	  is divided by the @Int\#@ arg.</span>
<a name="line-1214"></a>
<a name="line-1215"></a><a name="remAddr"></a><span class='hs-definition'>remAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1216"></a><span class='hs-definition'>remAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1217"></a>
<a name="line-1218"></a><span class='hs-comment'>-- |Coerce directly from address to int. Strongly deprecated.</span>
<a name="line-1219"></a>
<a name="line-1220"></a><a name="addr2Int"></a><span class='hs-definition'>addr2Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1221"></a><span class='hs-definition'>addr2Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1222"></a>
<a name="line-1223"></a><span class='hs-comment'>-- |Coerce directly from int to address. Strongly deprecated.</span>
<a name="line-1224"></a>
<a name="line-1225"></a><a name="int2Addr"></a><span class='hs-definition'>int2Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span>
<a name="line-1226"></a><span class='hs-definition'>int2Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1227"></a>
<a name="line-1228"></a><a name="gtAddr"></a><span class='hs-definition'>gtAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1229"></a><span class='hs-definition'>gtAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1230"></a>
<a name="line-1231"></a><a name="geAddr"></a><span class='hs-definition'>geAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1232"></a><span class='hs-definition'>geAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1233"></a>
<a name="line-1234"></a><a name="eqAddr"></a><span class='hs-definition'>eqAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1235"></a><span class='hs-definition'>eqAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1236"></a>
<a name="line-1237"></a><a name="neAddr"></a><span class='hs-definition'>neAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1238"></a><span class='hs-definition'>neAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1239"></a>
<a name="line-1240"></a><a name="ltAddr"></a><span class='hs-definition'>ltAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1241"></a><span class='hs-definition'>ltAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1242"></a>
<a name="line-1243"></a><a name="leAddr"></a><span class='hs-definition'>leAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1244"></a><span class='hs-definition'>leAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1245"></a>
<a name="line-1246"></a><span class='hs-comment'>-- |Reads 8-bit character; offset in bytes.</span>
<a name="line-1247"></a>
<a name="line-1248"></a><a name="indexCharOffAddr"></a><span class='hs-definition'>indexCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span>
<a name="line-1249"></a><span class='hs-definition'>indexCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1250"></a>
<a name="line-1251"></a><span class='hs-comment'>-- |Reads 31-bit character; offset in 4-byte words.</span>
<a name="line-1252"></a>
<a name="line-1253"></a><a name="indexWideCharOffAddr"></a><span class='hs-definition'>indexWideCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span>
<a name="line-1254"></a><span class='hs-definition'>indexWideCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1255"></a>
<a name="line-1256"></a><a name="indexIntOffAddr"></a><span class='hs-definition'>indexIntOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1257"></a><span class='hs-definition'>indexIntOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1258"></a>
<a name="line-1259"></a><a name="indexWordOffAddr"></a><span class='hs-definition'>indexWordOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-1260"></a><span class='hs-definition'>indexWordOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1261"></a>
<a name="line-1262"></a><a name="indexAddrOffAddr"></a><span class='hs-definition'>indexAddrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span>
<a name="line-1263"></a><span class='hs-definition'>indexAddrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1264"></a>
<a name="line-1265"></a><a name="indexFloatOffAddr"></a><span class='hs-definition'>indexFloatOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span>
<a name="line-1266"></a><span class='hs-definition'>indexFloatOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1267"></a>
<a name="line-1268"></a><a name="indexDoubleOffAddr"></a><span class='hs-definition'>indexDoubleOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span>
<a name="line-1269"></a><span class='hs-definition'>indexDoubleOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1270"></a>
<a name="line-1271"></a><a name="indexStablePtrOffAddr"></a><span class='hs-definition'>indexStablePtrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span>
<a name="line-1272"></a><span class='hs-definition'>indexStablePtrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1273"></a>
<a name="line-1274"></a><a name="indexInt8OffAddr"></a><span class='hs-definition'>indexInt8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1275"></a><span class='hs-definition'>indexInt8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1276"></a>
<a name="line-1277"></a><a name="indexInt16OffAddr"></a><span class='hs-definition'>indexInt16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1278"></a><span class='hs-definition'>indexInt16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1279"></a>
<a name="line-1280"></a><a name="indexInt32OffAddr"></a><span class='hs-definition'>indexInt32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1281"></a><span class='hs-definition'>indexInt32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1282"></a>
<a name="line-1283"></a><a name="indexInt64OffAddr"></a><span class='hs-definition'>indexInt64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int64</span><span class='hs-cpp'>#</span>
<a name="line-1284"></a><span class='hs-definition'>indexInt64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1285"></a>
<a name="line-1286"></a><a name="indexWord8OffAddr"></a><span class='hs-definition'>indexWord8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-1287"></a><span class='hs-definition'>indexWord8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1288"></a>
<a name="line-1289"></a><a name="indexWord16OffAddr"></a><span class='hs-definition'>indexWord16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-1290"></a><span class='hs-definition'>indexWord16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1291"></a>
<a name="line-1292"></a><a name="indexWord32OffAddr"></a><span class='hs-definition'>indexWord32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span>
<a name="line-1293"></a><span class='hs-definition'>indexWord32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1294"></a>
<a name="line-1295"></a><a name="indexWord64OffAddr"></a><span class='hs-definition'>indexWord64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word64</span><span class='hs-cpp'>#</span>
<a name="line-1296"></a><span class='hs-definition'>indexWord64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1297"></a>
<a name="line-1298"></a><span class='hs-comment'>-- |Reads 8-bit character; offset in bytes.</span>
<a name="line-1299"></a>
<a name="line-1300"></a><a name="readCharOffAddr"></a><span class='hs-definition'>readCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1301"></a><span class='hs-definition'>readCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1302"></a>
<a name="line-1303"></a><span class='hs-comment'>-- |Reads 31-bit character; offset in 4-byte words.</span>
<a name="line-1304"></a>
<a name="line-1305"></a><a name="readWideCharOffAddr"></a><span class='hs-definition'>readWideCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1306"></a><span class='hs-definition'>readWideCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1307"></a>
<a name="line-1308"></a><a name="readIntOffAddr"></a><span class='hs-definition'>readIntOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1309"></a><span class='hs-definition'>readIntOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1310"></a>
<a name="line-1311"></a><a name="readWordOffAddr"></a><span class='hs-definition'>readWordOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1312"></a><span class='hs-definition'>readWordOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1313"></a>
<a name="line-1314"></a><a name="readAddrOffAddr"></a><span class='hs-definition'>readAddrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1315"></a><span class='hs-definition'>readAddrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1316"></a>
<a name="line-1317"></a><a name="readFloatOffAddr"></a><span class='hs-definition'>readFloatOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1318"></a><span class='hs-definition'>readFloatOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1319"></a>
<a name="line-1320"></a><a name="readDoubleOffAddr"></a><span class='hs-definition'>readDoubleOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1321"></a><span class='hs-definition'>readDoubleOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1322"></a>
<a name="line-1323"></a><a name="readStablePtrOffAddr"></a><span class='hs-definition'>readStablePtrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1324"></a><span class='hs-definition'>readStablePtrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1325"></a>
<a name="line-1326"></a><a name="readInt8OffAddr"></a><span class='hs-definition'>readInt8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1327"></a><span class='hs-definition'>readInt8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1328"></a>
<a name="line-1329"></a><a name="readInt16OffAddr"></a><span class='hs-definition'>readInt16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1330"></a><span class='hs-definition'>readInt16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1331"></a>
<a name="line-1332"></a><a name="readInt32OffAddr"></a><span class='hs-definition'>readInt32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1333"></a><span class='hs-definition'>readInt32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1334"></a>
<a name="line-1335"></a><a name="readInt64OffAddr"></a><span class='hs-definition'>readInt64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int64</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1336"></a><span class='hs-definition'>readInt64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1337"></a>
<a name="line-1338"></a><a name="readWord8OffAddr"></a><span class='hs-definition'>readWord8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1339"></a><span class='hs-definition'>readWord8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1340"></a>
<a name="line-1341"></a><a name="readWord16OffAddr"></a><span class='hs-definition'>readWord16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1342"></a><span class='hs-definition'>readWord16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1343"></a>
<a name="line-1344"></a><a name="readWord32OffAddr"></a><span class='hs-definition'>readWord32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1345"></a><span class='hs-definition'>readWord32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1346"></a>
<a name="line-1347"></a><a name="readWord64OffAddr"></a><span class='hs-definition'>readWord64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Word64</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1348"></a><span class='hs-definition'>readWord64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1349"></a>
<a name="line-1350"></a><a name="writeCharOffAddr"></a><span class='hs-definition'>writeCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1351"></a><span class='hs-definition'>writeCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1352"></a>
<a name="line-1353"></a><a name="writeWideCharOffAddr"></a><span class='hs-definition'>writeWideCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1354"></a><span class='hs-definition'>writeWideCharOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1355"></a>
<a name="line-1356"></a><a name="writeIntOffAddr"></a><span class='hs-definition'>writeIntOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1357"></a><span class='hs-definition'>writeIntOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1358"></a>
<a name="line-1359"></a><a name="writeWordOffAddr"></a><span class='hs-definition'>writeWordOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1360"></a><span class='hs-definition'>writeWordOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1361"></a>
<a name="line-1362"></a><a name="writeAddrOffAddr"></a><span class='hs-definition'>writeAddrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1363"></a><span class='hs-definition'>writeAddrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1364"></a>
<a name="line-1365"></a><a name="writeFloatOffAddr"></a><span class='hs-definition'>writeFloatOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Float</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1366"></a><span class='hs-definition'>writeFloatOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1367"></a>
<a name="line-1368"></a><a name="writeDoubleOffAddr"></a><span class='hs-definition'>writeDoubleOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1369"></a><span class='hs-definition'>writeDoubleOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1370"></a>
<a name="line-1371"></a><a name="writeStablePtrOffAddr"></a><span class='hs-definition'>writeStablePtrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1372"></a><span class='hs-definition'>writeStablePtrOffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1373"></a>
<a name="line-1374"></a><a name="writeInt8OffAddr"></a><span class='hs-definition'>writeInt8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1375"></a><span class='hs-definition'>writeInt8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1376"></a>
<a name="line-1377"></a><a name="writeInt16OffAddr"></a><span class='hs-definition'>writeInt16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1378"></a><span class='hs-definition'>writeInt16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1379"></a>
<a name="line-1380"></a><a name="writeInt32OffAddr"></a><span class='hs-definition'>writeInt32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1381"></a><span class='hs-definition'>writeInt32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1382"></a>
<a name="line-1383"></a><a name="writeInt64OffAddr"></a><span class='hs-definition'>writeInt64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int64</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1384"></a><span class='hs-definition'>writeInt64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1385"></a>
<a name="line-1386"></a><a name="writeWord8OffAddr"></a><span class='hs-definition'>writeWord8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1387"></a><span class='hs-definition'>writeWord8OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1388"></a>
<a name="line-1389"></a><a name="writeWord16OffAddr"></a><span class='hs-definition'>writeWord16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1390"></a><span class='hs-definition'>writeWord16OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1391"></a>
<a name="line-1392"></a><a name="writeWord32OffAddr"></a><span class='hs-definition'>writeWord32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1393"></a><span class='hs-definition'>writeWord32OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1394"></a>
<a name="line-1395"></a><a name="writeWord64OffAddr"></a><span class='hs-definition'>writeWord64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Word64</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1396"></a><span class='hs-definition'>writeWord64OffAddr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1397"></a>
<a name="line-1398"></a><span class='hs-comment'>-- |A @MutVar\#@ behaves like a single-element mutable array.</span>
<a name="line-1399"></a>
<a name="line-1400"></a><a name="MutVar"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>MutVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span>
<a name="line-1401"></a>
<a name="line-1402"></a><span class='hs-comment'>-- |Create @MutVar\#@ with specified initial value in specified state thread.</span>
<a name="line-1403"></a>
<a name="line-1404"></a><a name="newMutVar"></a><span class='hs-definition'>newMutVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>MutVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1405"></a><span class='hs-definition'>newMutVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1406"></a>
<a name="line-1407"></a><span class='hs-comment'>-- |Read contents of @MutVar\#@. Result is not yet evaluated.</span>
<a name="line-1408"></a>
<a name="line-1409"></a><a name="readMutVar"></a><span class='hs-definition'>readMutVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1410"></a><span class='hs-definition'>readMutVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1411"></a>
<a name="line-1412"></a><span class='hs-comment'>-- |Write contents of @MutVar\#@.</span>
<a name="line-1413"></a>
<a name="line-1414"></a><a name="writeMutVar"></a><span class='hs-definition'>writeMutVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1415"></a><span class='hs-definition'>writeMutVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1416"></a>
<a name="line-1417"></a><a name="sameMutVar"></a><span class='hs-definition'>sameMutVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MutVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1418"></a><span class='hs-definition'>sameMutVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1419"></a>
<a name="line-1420"></a><a name="atomicModifyMutVar"></a><span class='hs-definition'>atomicModifyMutVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MutVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-varid'>c</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1421"></a><span class='hs-definition'>atomicModifyMutVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1422"></a>
<a name="line-1423"></a><a name="catch"></a><span class='hs-definition'>catch</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1424"></a><span class='hs-definition'>catch</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1425"></a>
<a name="line-1426"></a><a name="raise"></a><span class='hs-definition'>raise</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span>
<a name="line-1427"></a><span class='hs-definition'>raise</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1428"></a>
<a name="line-1429"></a><a name="raiseIO"></a><span class='hs-definition'>raiseIO</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>b</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1430"></a><span class='hs-definition'>raiseIO</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1431"></a>
<a name="line-1432"></a><a name="maskAsyncExceptions"></a><span class='hs-definition'>maskAsyncExceptions</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1433"></a><span class='hs-definition'>maskAsyncExceptions</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1434"></a>
<a name="line-1435"></a><a name="maskUninterruptible"></a><span class='hs-definition'>maskUninterruptible</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1436"></a><span class='hs-definition'>maskUninterruptible</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1437"></a>
<a name="line-1438"></a><a name="unmaskAsyncExceptions"></a><span class='hs-definition'>unmaskAsyncExceptions</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1439"></a><span class='hs-definition'>unmaskAsyncExceptions</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1440"></a>
<a name="line-1441"></a><a name="getMaskingState"></a><span class='hs-definition'>getMaskingState</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1442"></a><span class='hs-definition'>getMaskingState</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1443"></a>
<a name="line-1444"></a><a name="TVar"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>TVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span>
<a name="line-1445"></a>
<a name="line-1446"></a><a name="atomically"></a><span class='hs-definition'>atomically</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1447"></a><span class='hs-definition'>atomically</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1448"></a>
<a name="line-1449"></a><a name="retry"></a><span class='hs-definition'>retry</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1450"></a><span class='hs-definition'>retry</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1451"></a>
<a name="line-1452"></a><a name="catchRetry"></a><span class='hs-definition'>catchRetry</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1453"></a><span class='hs-definition'>catchRetry</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1454"></a>
<a name="line-1455"></a><a name="catchSTM"></a><span class='hs-definition'>catchSTM</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1456"></a><span class='hs-definition'>catchSTM</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1457"></a>
<a name="line-1458"></a><a name="check"></a><span class='hs-definition'>check</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>()</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1459"></a><span class='hs-definition'>check</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1460"></a>
<a name="line-1461"></a><span class='hs-comment'>-- |Create a new @TVar\#@ holding a specified initial value.</span>
<a name="line-1462"></a>
<a name="line-1463"></a><a name="newTVar"></a><span class='hs-definition'>newTVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>TVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1464"></a><span class='hs-definition'>newTVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1465"></a>
<a name="line-1466"></a><span class='hs-comment'>-- |Read contents of @TVar\#@.  Result is not yet evaluated.</span>
<a name="line-1467"></a>
<a name="line-1468"></a><a name="readTVar"></a><span class='hs-definition'>readTVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1469"></a><span class='hs-definition'>readTVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1470"></a>
<a name="line-1471"></a><span class='hs-comment'>-- |Read contents of @TVar\#@ outside an STM transaction</span>
<a name="line-1472"></a>
<a name="line-1473"></a><a name="readTVarIO"></a><span class='hs-definition'>readTVarIO</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1474"></a><span class='hs-definition'>readTVarIO</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1475"></a>
<a name="line-1476"></a><span class='hs-comment'>-- |Write contents of @TVar\#@.</span>
<a name="line-1477"></a>
<a name="line-1478"></a><a name="writeTVar"></a><span class='hs-definition'>writeTVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1479"></a><span class='hs-definition'>writeTVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1480"></a>
<a name="line-1481"></a><a name="sameTVar"></a><span class='hs-definition'>sameTVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>TVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1482"></a><span class='hs-definition'>sameTVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1483"></a>
<a name="line-1484"></a><span class='hs-comment'>-- | A shared mutable variable (/not/ the same as a @MutVar\#@!).</span>
<a name="line-1485"></a><span class='hs-comment'>-- 	(Note: in a non-concurrent implementation, @(MVar\# a)@ can be</span>
<a name="line-1486"></a><span class='hs-comment'>-- 	represented by @(MutVar\# (Maybe a))@.) </span>
<a name="line-1487"></a>
<a name="line-1488"></a><a name="MVar"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>MVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span>
<a name="line-1489"></a>
<a name="line-1490"></a><span class='hs-comment'>-- |Create new @MVar\#@; initially empty.</span>
<a name="line-1491"></a>
<a name="line-1492"></a><a name="newMVar"></a><span class='hs-definition'>newMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>MVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1493"></a><span class='hs-definition'>newMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1494"></a>
<a name="line-1495"></a><span class='hs-comment'>-- |If @MVar\#@ is empty, block until it becomes full.</span>
<a name="line-1496"></a><span class='hs-comment'>--    Then remove and return its contents, and set it empty.</span>
<a name="line-1497"></a>
<a name="line-1498"></a><a name="takeMVar"></a><span class='hs-definition'>takeMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1499"></a><span class='hs-definition'>takeMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1500"></a>
<a name="line-1501"></a><span class='hs-comment'>-- |If @MVar\#@ is empty, immediately return with integer 0 and value undefined.</span>
<a name="line-1502"></a><span class='hs-comment'>--    Otherwise, return with integer 1 and contents of @MVar\#@, and set @MVar\#@ empty.</span>
<a name="line-1503"></a>
<a name="line-1504"></a><a name="tryTakeMVar"></a><span class='hs-definition'>tryTakeMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1505"></a><span class='hs-definition'>tryTakeMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1506"></a>
<a name="line-1507"></a><span class='hs-comment'>-- |If @MVar\#@ is full, block until it becomes empty.</span>
<a name="line-1508"></a><span class='hs-comment'>--    Then store value arg as its new contents.</span>
<a name="line-1509"></a>
<a name="line-1510"></a><a name="putMVar"></a><span class='hs-definition'>putMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1511"></a><span class='hs-definition'>putMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1512"></a>
<a name="line-1513"></a><span class='hs-comment'>-- |If @MVar\#@ is full, immediately return with integer 0.</span>
<a name="line-1514"></a><span class='hs-comment'>--     Otherwise, store value arg as @MVar\#@\'s new contents, and return with integer 1.</span>
<a name="line-1515"></a>
<a name="line-1516"></a><a name="tryPutMVar"></a><span class='hs-definition'>tryPutMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1517"></a><span class='hs-definition'>tryPutMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1518"></a>
<a name="line-1519"></a><a name="sameMVar"></a><span class='hs-definition'>sameMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>MVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-1520"></a><span class='hs-definition'>sameMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1521"></a>
<a name="line-1522"></a><span class='hs-comment'>-- |Return 1 if @MVar\#@ is empty; 0 otherwise.</span>
<a name="line-1523"></a>
<a name="line-1524"></a><a name="isEmptyMVar"></a><span class='hs-definition'>isEmptyMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MVar</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1525"></a><span class='hs-definition'>isEmptyMVar</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1526"></a>
<a name="line-1527"></a><span class='hs-comment'>-- |Sleep specified number of microseconds.</span>
<a name="line-1528"></a>
<a name="line-1529"></a><a name="delay"></a><span class='hs-definition'>delay</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1530"></a><span class='hs-definition'>delay</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1531"></a>
<a name="line-1532"></a><span class='hs-comment'>-- |Block until input is available on specified file descriptor.</span>
<a name="line-1533"></a>
<a name="line-1534"></a><a name="waitRead"></a><span class='hs-definition'>waitRead</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1535"></a><span class='hs-definition'>waitRead</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1536"></a>
<a name="line-1537"></a><span class='hs-comment'>-- |Block until output is possible on specified file descriptor.</span>
<a name="line-1538"></a>
<a name="line-1539"></a><a name="waitWrite"></a><span class='hs-definition'>waitWrite</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1540"></a><span class='hs-definition'>waitWrite</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1541"></a>
<a name="line-1542"></a><span class='hs-comment'>-- | @State\#@ is the primitive, unlifted type of states.  It has</span>
<a name="line-1543"></a><span class='hs-comment'>-- 	one type parameter, thus @State\# RealWorld@, or @State\# s@,</span>
<a name="line-1544"></a><span class='hs-comment'>-- 	where s is a type variable. The only purpose of the type parameter</span>
<a name="line-1545"></a><span class='hs-comment'>-- 	is to keep different state threads separate.  It is represented by</span>
<a name="line-1546"></a><span class='hs-comment'>-- 	nothing at all. </span>
<a name="line-1547"></a>
<a name="line-1548"></a><a name="State"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1549"></a>
<a name="line-1550"></a><span class='hs-comment'>-- | @RealWorld@ is deeply magical.  It is /primitive/, but it is not</span>
<a name="line-1551"></a><span class='hs-comment'>-- 	/unlifted/ (hence @ptrArg@).  We never manipulate values of type</span>
<a name="line-1552"></a><span class='hs-comment'>-- 	@RealWorld@; it\'s only used in the type system, to parameterise @State\#@. </span>
<a name="line-1553"></a>
<a name="line-1554"></a><a name="RealWorld"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>RealWorld</span>
<a name="line-1555"></a>
<a name="line-1556"></a><span class='hs-comment'>-- |(In a non-concurrent implementation, this can be a singleton</span>
<a name="line-1557"></a><span class='hs-comment'>-- 	type, whose (unique) value is returned by @myThreadId\#@.  The </span>
<a name="line-1558"></a><span class='hs-comment'>-- 	other operations can be omitted.)</span>
<a name="line-1559"></a>
<a name="line-1560"></a><a name="ThreadId"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>ThreadId</span><span class='hs-cpp'>#</span>
<a name="line-1561"></a>
<a name="line-1562"></a><a name="fork"></a><span class='hs-definition'>fork</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>ThreadId</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1563"></a><span class='hs-definition'>fork</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1564"></a>
<a name="line-1565"></a><a name="forkOn"></a><span class='hs-definition'>forkOn</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>ThreadId</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1566"></a><span class='hs-definition'>forkOn</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1567"></a>
<a name="line-1568"></a><a name="killThread"></a><span class='hs-definition'>killThread</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ThreadId</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span>
<a name="line-1569"></a><span class='hs-definition'>killThread</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1570"></a>
<a name="line-1571"></a><a name="yield"></a><span class='hs-definition'>yield</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span>
<a name="line-1572"></a><span class='hs-definition'>yield</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1573"></a>
<a name="line-1574"></a><a name="myThreadId"></a><span class='hs-definition'>myThreadId</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>ThreadId</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1575"></a><span class='hs-definition'>myThreadId</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1576"></a>
<a name="line-1577"></a><a name="labelThread"></a><span class='hs-definition'>labelThread</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ThreadId</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span>
<a name="line-1578"></a><span class='hs-definition'>labelThread</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1579"></a>
<a name="line-1580"></a><a name="isCurrentThreadBound"></a><span class='hs-definition'>isCurrentThreadBound</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1581"></a><span class='hs-definition'>isCurrentThreadBound</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1582"></a>
<a name="line-1583"></a><a name="noDuplicate"></a><span class='hs-definition'>noDuplicate</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span>
<a name="line-1584"></a><span class='hs-definition'>noDuplicate</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1585"></a>
<a name="line-1586"></a><a name="threadStatus"></a><span class='hs-definition'>threadStatus</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ThreadId</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1587"></a><span class='hs-definition'>threadStatus</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1588"></a>
<a name="line-1589"></a><a name="Weak"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Weak</span><span class='hs-cpp'>#</span> <span class='hs-varid'>b</span>
<a name="line-1590"></a>
<a name="line-1591"></a><a name="mkWeak"></a><span class='hs-definition'>mkWeak</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>Weak</span><span class='hs-cpp'>#</span> <span class='hs-varid'>b</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1592"></a><span class='hs-definition'>mkWeak</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1593"></a>
<a name="line-1594"></a><a name="mkWeakForeignEnv"></a><span class='hs-definition'>mkWeakForeignEnv</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>Weak</span><span class='hs-cpp'>#</span> <span class='hs-varid'>b</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1595"></a><span class='hs-definition'>mkWeakForeignEnv</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1596"></a>
<a name="line-1597"></a><a name="deRefWeak"></a><span class='hs-definition'>deRefWeak</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Weak</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1598"></a><span class='hs-definition'>deRefWeak</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1599"></a>
<a name="line-1600"></a><a name="finalizeWeak"></a><span class='hs-definition'>finalizeWeak</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Weak</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>()</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1601"></a><span class='hs-definition'>finalizeWeak</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1602"></a>
<a name="line-1603"></a><a name="touch"></a><span class='hs-definition'>touch</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span>
<a name="line-1604"></a><span class='hs-definition'>touch</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1605"></a>
<a name="line-1606"></a><a name="StablePtr"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span>
<a name="line-1607"></a>
<a name="line-1608"></a><a name="StableName"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>StableName</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span>
<a name="line-1609"></a>
<a name="line-1610"></a><a name="makeStablePtr"></a><span class='hs-definition'>makeStablePtr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1611"></a><span class='hs-definition'>makeStablePtr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1612"></a>
<a name="line-1613"></a><a name="deRefStablePtr"></a><span class='hs-definition'>deRefStablePtr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1614"></a><span class='hs-definition'>deRefStablePtr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1615"></a>
<a name="line-1616"></a><a name="eqStablePtr"></a><span class='hs-definition'>eqStablePtr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StablePtr</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1617"></a><span class='hs-definition'>eqStablePtr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1618"></a>
<a name="line-1619"></a><a name="makeStableName"></a><span class='hs-definition'>makeStableName</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-layout'>(</span><span class='hs-conid'>RealWorld</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>StableName</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1620"></a><span class='hs-definition'>makeStableName</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1621"></a>
<a name="line-1622"></a><a name="eqStableName"></a><span class='hs-definition'>eqStableName</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>StableName</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>StableName</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1623"></a><span class='hs-definition'>eqStableName</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1624"></a>
<a name="line-1625"></a><a name="stableNameToInt"></a><span class='hs-definition'>stableNameToInt</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>StableName</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1626"></a><span class='hs-definition'>stableNameToInt</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1627"></a>
<a name="line-1628"></a><a name="reallyUnsafePtrEquality"></a><span class='hs-definition'>reallyUnsafePtrEquality</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1629"></a><span class='hs-definition'>reallyUnsafePtrEquality</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1630"></a>
<a name="line-1631"></a><a name="par"></a><span class='hs-definition'>par</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1632"></a><span class='hs-definition'>par</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1633"></a>
<a name="line-1634"></a><a name="getSpark"></a><span class='hs-definition'>getSpark</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1635"></a><span class='hs-definition'>getSpark</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1636"></a>
<a name="line-1637"></a><span class='hs-comment'>-- | Returns the number of sparks in the local spark pool. </span>
<a name="line-1638"></a>
<a name="line-1639"></a><a name="numSparks"></a><span class='hs-definition'>numSparks</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1640"></a><span class='hs-definition'>numSparks</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1641"></a>
<a name="line-1642"></a><a name="parGlobal"></a><span class='hs-definition'>parGlobal</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1643"></a><span class='hs-definition'>parGlobal</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1644"></a>
<a name="line-1645"></a><a name="parLocal"></a><span class='hs-definition'>parLocal</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1646"></a><span class='hs-definition'>parLocal</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1647"></a>
<a name="line-1648"></a><a name="parAt"></a><span class='hs-definition'>parAt</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1649"></a><span class='hs-definition'>parAt</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1650"></a>
<a name="line-1651"></a><a name="parAtAbs"></a><span class='hs-definition'>parAtAbs</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1652"></a><span class='hs-definition'>parAtAbs</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1653"></a>
<a name="line-1654"></a><a name="parAtRel"></a><span class='hs-definition'>parAtRel</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1655"></a><span class='hs-definition'>parAtRel</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1656"></a>
<a name="line-1657"></a><a name="parAtForNow"></a><span class='hs-definition'>parAtForNow</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1658"></a><span class='hs-definition'>parAtForNow</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1659"></a>
<a name="line-1660"></a><a name="dataToTag"></a><span class='hs-definition'>dataToTag</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span>
<a name="line-1661"></a><span class='hs-definition'>dataToTag</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1662"></a>
<a name="line-1663"></a><a name="tagToEnum"></a><span class='hs-definition'>tagToEnum</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span>
<a name="line-1664"></a><span class='hs-definition'>tagToEnum</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1665"></a>
<a name="line-1666"></a><span class='hs-comment'>-- |Primitive bytecode type.</span>
<a name="line-1667"></a>
<a name="line-1668"></a><a name="BCO"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>BCO</span><span class='hs-cpp'>#</span>
<a name="line-1669"></a>
<a name="line-1670"></a><span class='hs-comment'>-- |Convert an @Addr\#@ to a followable type.</span>
<a name="line-1671"></a>
<a name="line-1672"></a><a name="addrToHValue"></a><span class='hs-definition'>addrToHValue</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1673"></a><span class='hs-definition'>addrToHValue</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1674"></a>
<a name="line-1675"></a><a name="mkApUpd0"></a><span class='hs-definition'>mkApUpd0</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>BCO</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1676"></a><span class='hs-definition'>mkApUpd0</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1677"></a>
<a name="line-1678"></a><a name="newBCO"></a><span class='hs-definition'>newBCO</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Array</span><span class='hs-cpp'>#</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span><span class='hs-conid'>BCO</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1679"></a><span class='hs-definition'>newBCO</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1680"></a>
<a name="line-1681"></a><a name="unpackClosure"></a><span class='hs-definition'>unpackClosure</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-conid'>Array</span><span class='hs-cpp'>#</span> <span class='hs-varid'>b</span><span class='hs-layout'>,</span><span class='hs-conid'>ByteArray</span><span class='hs-cpp'>#</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1682"></a><span class='hs-definition'>unpackClosure</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1683"></a>
<a name="line-1684"></a><a name="getApStackVal"></a><span class='hs-definition'>getApStackVal</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-cpp'>#</span> <span class='hs-conid'>Int</span><span class='hs-cpp'>#</span><span class='hs-layout'>,</span><span class='hs-varid'>b</span> <span class='hs-cpp'>#</span><span class='hs-layout'>)</span>
<a name="line-1685"></a><span class='hs-definition'>getApStackVal</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1686"></a>
<a name="line-1687"></a><a name="traceCcs"></a><span class='hs-definition'>traceCcs</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span>
<a name="line-1688"></a><span class='hs-definition'>traceCcs</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1689"></a>
<a name="line-1690"></a><span class='hs-comment'>-- | Evaluates its first argument to head normal form, and then returns its second</span>
<a name="line-1691"></a><span class='hs-comment'>-- 	argument as the result. </span>
<a name="line-1692"></a>
<a name="line-1693"></a><a name="seq"></a><span class='hs-definition'>seq</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span>
<a name="line-1694"></a><span class='hs-definition'>seq</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1695"></a>
<a name="line-1696"></a><span class='hs-comment'>-- | The call @(inline f)@ arranges that f is inlined, regardless of its size.</span>
<a name="line-1697"></a><span class='hs-comment'>-- 	More precisely, the call @(inline f)@ rewrites to the right-hand side of</span>
<a name="line-1698"></a><span class='hs-comment'>-- 	@f@\'s definition. This allows the programmer to control inlining from a</span>
<a name="line-1699"></a><span class='hs-comment'>-- 	particular call site rather than the definition site of the function (c.f.</span>
<a name="line-1700"></a><span class='hs-comment'>-- 	@INLINE@ pragmas in User\'s Guide, Section 7.10.3, \"INLINE and NOINLINE</span>
<a name="line-1701"></a><span class='hs-comment'>-- 	pragmas\").</span>
<a name="line-1702"></a><span class='hs-comment'>-- </span>
<a name="line-1703"></a><span class='hs-comment'>-- 	This inlining occurs regardless of the argument to the call or the size of</span>
<a name="line-1704"></a><span class='hs-comment'>-- 	@f@\'s definition; it is unconditional. The main caveat is that @f@\'s</span>
<a name="line-1705"></a><span class='hs-comment'>-- 	definition must be visible to the compiler. That is, @f@ must be</span>
<a name="line-1706"></a><span class='hs-comment'>-- 	@let@-bound in the current scope. If no inlining takes place, the</span>
<a name="line-1707"></a><span class='hs-comment'>-- 	@inline@ function expands to the identity function in Phase zero; so its</span>
<a name="line-1708"></a><span class='hs-comment'>-- 	use imposes no overhead.</span>
<a name="line-1709"></a><span class='hs-comment'>-- </span>
<a name="line-1710"></a><span class='hs-comment'>-- 	It is good practice to mark the function with an INLINABLE pragma at</span>
<a name="line-1711"></a><span class='hs-comment'>--         its definition, (a) so that GHC guarantees to expose its unfolding regardless</span>
<a name="line-1712"></a><span class='hs-comment'>--         of size, and (b) so that you have control over exactly what is inlined. </span>
<a name="line-1713"></a>
<a name="line-1714"></a><a name="inline"></a><span class='hs-definition'>inline</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span>
<a name="line-1715"></a><span class='hs-definition'>inline</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1716"></a>
<a name="line-1717"></a><span class='hs-comment'>-- | The @lazy@ function restrains strictness analysis a little. The call</span>
<a name="line-1718"></a><span class='hs-comment'>-- 	@(lazy e)@ means the same as @e@, but @lazy@ has a magical</span>
<a name="line-1719"></a><span class='hs-comment'>-- 	property so far as strictness analysis is concerned: it is lazy in its first</span>
<a name="line-1720"></a><span class='hs-comment'>-- 	argument, even though its semantics is strict. After strictness analysis has</span>
<a name="line-1721"></a><span class='hs-comment'>-- 	run, calls to @lazy@ are inlined to be the identity function.</span>
<a name="line-1722"></a><span class='hs-comment'>-- </span>
<a name="line-1723"></a><span class='hs-comment'>-- 	This behaviour is occasionally useful when controlling evaluation order.</span>
<a name="line-1724"></a><span class='hs-comment'>-- 	Notably, @lazy@ is used in the library definition of @Control.Parallel.par@:</span>
<a name="line-1725"></a><span class='hs-comment'>-- </span>
<a name="line-1726"></a><span class='hs-comment'>-- 	@par :: a -&gt; b -&gt; b@</span>
<a name="line-1727"></a><span class='hs-comment'>-- </span>
<a name="line-1728"></a><span class='hs-comment'>-- 	@par x y = case (par\# x) of \_ -&gt; lazy y@</span>
<a name="line-1729"></a><span class='hs-comment'>-- </span>
<a name="line-1730"></a><span class='hs-comment'>-- 	If @lazy@ were not lazy, @par@ would look strict in @y@ which</span>
<a name="line-1731"></a><span class='hs-comment'>-- 	would defeat the whole purpose of @par@.</span>
<a name="line-1732"></a><span class='hs-comment'>-- </span>
<a name="line-1733"></a><span class='hs-comment'>-- 	Like @seq@, the argument of @lazy@ can have an unboxed type. </span>
<a name="line-1734"></a>
<a name="line-1735"></a><a name="lazy"></a><span class='hs-definition'>lazy</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>a</span>
<a name="line-1736"></a><span class='hs-definition'>lazy</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1737"></a>
<a name="line-1738"></a><span class='hs-comment'>-- | The type constructor @Any@ is type to which you can unsafely coerce any</span>
<a name="line-1739"></a><span class='hs-comment'>-- 	lifted type, and back. </span>
<a name="line-1740"></a><span class='hs-comment'>-- </span>
<a name="line-1741"></a><span class='hs-comment'>-- 	  * It is lifted, and hence represented by a pointer</span>
<a name="line-1742"></a><span class='hs-comment'>-- </span>
<a name="line-1743"></a><span class='hs-comment'>-- 	  * It does not claim to be a /data/ type, and that\'s important for</span>
<a name="line-1744"></a><span class='hs-comment'>-- 	    the code generator, because the code gen may /enter/ a data value</span>
<a name="line-1745"></a><span class='hs-comment'>-- 	    but never enters a function value.  </span>
<a name="line-1746"></a><span class='hs-comment'>-- </span>
<a name="line-1747"></a><span class='hs-comment'>-- 	It\'s also used to instantiate un-constrained type variables after type</span>
<a name="line-1748"></a><span class='hs-comment'>-- 	checking.  For example</span>
<a name="line-1749"></a><span class='hs-comment'>-- </span>
<a name="line-1750"></a><span class='hs-comment'>-- 	@length Any []@</span>
<a name="line-1751"></a><span class='hs-comment'>-- </span>
<a name="line-1752"></a><span class='hs-comment'>-- 	Annoyingly, we sometimes need @Any@s of other kinds, such as @(* -&gt; *)@ etc.</span>
<a name="line-1753"></a><span class='hs-comment'>-- 	This is a bit like tuples.   We define a couple of useful ones here,</span>
<a name="line-1754"></a><span class='hs-comment'>-- 	and make others up on the fly.  If any of these others end up being exported</span>
<a name="line-1755"></a><span class='hs-comment'>-- 	into interface files, we\'ll get a crash; at least until we add interface-file</span>
<a name="line-1756"></a><span class='hs-comment'>-- 	syntax to support them. </span>
<a name="line-1757"></a>
<a name="line-1758"></a><a name="Any"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Any</span> <span class='hs-varid'>a</span>
<a name="line-1759"></a>
<a name="line-1760"></a><span class='hs-comment'>-- | The function @unsafeCoerce\#@ allows you to side-step the typechecker entirely. That</span>
<a name="line-1761"></a><span class='hs-comment'>-- 	is, it allows you to coerce any type into any other type. If you use this function,</span>
<a name="line-1762"></a><span class='hs-comment'>-- 	you had better get it right, otherwise segmentation faults await. It is generally</span>
<a name="line-1763"></a><span class='hs-comment'>-- 	used when you want to write a program that you know is well-typed, but where Haskell\'s</span>
<a name="line-1764"></a><span class='hs-comment'>-- 	type system is not expressive enough to prove that it is well typed.</span>
<a name="line-1765"></a><span class='hs-comment'>-- </span>
<a name="line-1766"></a><span class='hs-comment'>--         The following uses of @unsafeCoerce\#@ are supposed to work (i.e. not lead to</span>
<a name="line-1767"></a><span class='hs-comment'>--         spurious compile-time or run-time crashes):</span>
<a name="line-1768"></a><span class='hs-comment'>-- </span>
<a name="line-1769"></a><span class='hs-comment'>--          * Casting any lifted type to @Any@</span>
<a name="line-1770"></a><span class='hs-comment'>-- </span>
<a name="line-1771"></a><span class='hs-comment'>--          * Casting @Any@ back to the real type</span>
<a name="line-1772"></a><span class='hs-comment'>-- </span>
<a name="line-1773"></a><span class='hs-comment'>--          * Casting an unboxed type to another unboxed type of the same size</span>
<a name="line-1774"></a><span class='hs-comment'>--            (but not coercions between floating-point and integral types)</span>
<a name="line-1775"></a><span class='hs-comment'>-- </span>
<a name="line-1776"></a><span class='hs-comment'>--          * Casting between two types that have the same runtime representation.  One case is when</span>
<a name="line-1777"></a><span class='hs-comment'>--            the two types differ only in \"phantom\" type parameters, for example</span>
<a name="line-1778"></a><span class='hs-comment'>--            @Ptr Int@ to @Ptr Float@, or @[Int]@ to @[Float]@ when the list is </span>
<a name="line-1779"></a><span class='hs-comment'>--            known to be empty.  Also, a @newtype@ of a type @T@ has the same representation</span>
<a name="line-1780"></a><span class='hs-comment'>--            at runtime as @T@.</span>
<a name="line-1781"></a><span class='hs-comment'>-- </span>
<a name="line-1782"></a><span class='hs-comment'>--         Other uses of @unsafeCoerce\#@ are undefined.  In particular, you should not use</span>
<a name="line-1783"></a><span class='hs-comment'>-- 	@unsafeCoerce\#@ to cast a T to an algebraic data type D, unless T is also</span>
<a name="line-1784"></a><span class='hs-comment'>-- 	an algebraic data type.  For example, do not cast @Int-&gt;Int@ to @Bool@, even if</span>
<a name="line-1785"></a><span class='hs-comment'>--         you later cast that @Bool@ back to @Int-&gt;Int@ before applying it.  The reasons</span>
<a name="line-1786"></a><span class='hs-comment'>--         have to do with GHC\'s internal representation details (for the congnoscenti, data values</span>
<a name="line-1787"></a><span class='hs-comment'>-- 	can be entered but function closures cannot).  If you want a safe type to cast things</span>
<a name="line-1788"></a><span class='hs-comment'>-- 	to, use @Any@, which is not an algebraic data type.</span>
<a name="line-1789"></a><span class='hs-comment'>-- 	</span>
<a name="line-1790"></a><span class='hs-comment'>--         </span>
<a name="line-1791"></a>
<a name="line-1792"></a><a name="unsafeCoerce"></a><span class='hs-definition'>unsafeCoerce</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>b</span>
<a name="line-1793"></a><span class='hs-definition'>unsafeCoerce</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1794"></a>
<a name="line-1795"></a><span class='hs-comment'>-- | Emits an event via the RTS tracing framework.  The contents</span>
<a name="line-1796"></a><span class='hs-comment'>--      of the event is the zero-terminated byte string passed as the first</span>
<a name="line-1797"></a><span class='hs-comment'>--      argument.  The event will be emitted either to the .eventlog file,</span>
<a name="line-1798"></a><span class='hs-comment'>--      or to stderr, depending on the runtime RTS flags. </span>
<a name="line-1799"></a>
<a name="line-1800"></a><a name="traceEvent"></a><span class='hs-definition'>traceEvent</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Addr</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>State</span><span class='hs-cpp'>#</span> <span class='hs-varid'>s</span>
<a name="line-1801"></a><span class='hs-definition'>traceEvent</span><span class='hs-cpp'>#</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-keyword'>in</span> <span class='hs-varid'>x</span>
<a name="line-1802"></a>
<a name="line-1803"></a>
<a name="line-1804"></a>
</pre></body>
</html>