<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >GHC.Exts</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_GHC-Exts.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >base-4.2.0.2: Basic libraries</TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >GHC.Exts</FONT ></TD ><TD ALIGN="right" ><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="infohead" >Portability</TD ><TD CLASS="infoval" >non-portable (GHC Extensions)</TD ></TR ><TR ><TD CLASS="infohead" >Stability</TD ><TD CLASS="infoval" >internal</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >cvs-ghc@haskell.org</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><B >Contents</B ></TD ></TR ><TR ><TD ><DL ><DT ><A HREF="#1" >Representations of some basic types </A ></DT ><DT ><A HREF="#2" >The maximum tuple size </A ></DT ><DT ><A HREF="#3" >Primitive operations </A ></DT ><DT ><A HREF="#4" >Fusion </A ></DT ><DT ><A HREF="#5" >Overloaded string literals </A ></DT ><DT ><A HREF="#6" >Debugging </A ></DT ><DT ><A HREF="#7" >Ids with special behaviour </A ></DT ><DT ><A HREF="#8" >Transform comprehensions </A ></DT ><DT ><A HREF="#9" >Event logging </A ></DT ></DL ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" >GHC Extensions: this is the Approved Way to get at GHC-specific extensions. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AInt" >Int</A > = <A HREF="#v%3AI%23" >I#</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AWord" >Word</A > = <A HREF="#v%3AW%23" >W#</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AFloat" >Float</A > = <A HREF="#v%3AF%23" >F#</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AFloat%23" >Float#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ADouble" >Double</A > = <A HREF="#v%3AD%23" >D#</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3ADouble%23" >Double#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AChar" >Char</A > = <A HREF="#v%3AC%23" >C#</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AChar%23" >Char#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3APtr" >Ptr</A > a = <A HREF="#v%3APtr" >Ptr</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AAddr%23" >Addr#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AFunPtr" >FunPtr</A > a = <A HREF="#v%3AFunPtr" >FunPtr</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AAddr%23" >Addr#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmaxTupleSize" >maxTupleSize</A > :: <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" >module <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html" >GHC.Prim</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshiftL%23" >shiftL#</A > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshiftRL%23" >shiftRL#</A > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AiShiftL%23" >iShiftL#</A > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AiShiftRA%23" >iShiftRA#</A > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AiShiftRL%23" >iShiftRL#</A > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AuncheckedShiftL64%23" >uncheckedShiftL64#</A > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AuncheckedShiftRL64%23" >uncheckedShiftRL64#</A > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AuncheckedIShiftL64%23" >uncheckedIShiftL64#</A > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AuncheckedIShiftRA64%23" >uncheckedIShiftRA64#</A > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Abuild" >build</A > :: <SPAN CLASS="keyword" >forall</SPAN > a. (<SPAN CLASS="keyword" >forall</SPAN > b. (a -> b -> b) -> b -> b) -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aaugment" >augment</A > :: <SPAN CLASS="keyword" >forall</SPAN > a. (<SPAN CLASS="keyword" >forall</SPAN > b. (a -> b -> b) -> b -> b) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3AIsString" >IsString</A > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="#v%3AfromString" >fromString</A > :: <A HREF="Data-Char.html#t%3AString" >String</A > -> a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Abreakpoint" >breakpoint</A > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AbreakpointCond" >breakpointCond</A > :: <A HREF="Data-Bool.html#t%3ABool" >Bool</A > -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alazy" >lazy</A > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ainline" >inline</A > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >newtype</SPAN > <A HREF="#t%3ADown" >Down</A > a = <A HREF="#v%3ADown" >Down</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgroupWith" >groupWith</A > :: <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > b => (a -> b) -> [a] -> [[a]]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsortWith" >sortWith</A > :: <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > b => (a -> b) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Athe" >the</A > :: <A HREF="Data-Eq.html#t%3AEq" >Eq</A > a => [a] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtraceEvent" >traceEvent</A > :: <A HREF="Data-Char.html#t%3AString" >String</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="1" ><A NAME="1" >Representations of some basic types </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Int" ><A NAME="t%3AInt" ></A ></A ><B >Int</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A fixed-precision integer type with at least the range <TT >[-2^29 .. 2^29-1]</TT >. The exact range for a given implementation can be determined by using Prelude.minBound and Prelude.maxBound from the Prelude.Bounded class. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:I#" ><A NAME="v%3AI%23" ></A ></A ><B >I#</B > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Int')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Int" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Data.html#t%3AData" >Data</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Show.html#t%3AShow" >Show</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ix.html#t%3AIx" >Ix</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Bits.html#t%3ABits" >Bits</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Foreign-Storable.html#t%3AStorable" >Storable</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Printf.html#t%3APrintfArg" >PrintfArg</A > <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Word" ><A NAME="t%3AWord" ></A ></A ><B >Word</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A <TT ><A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TT > is an unsigned integral type, with the same size as <TT ><A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TT >. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:W#" ><A NAME="v%3AW%23" ></A ></A ><B >W#</B > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Word')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Word" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Data.html#t%3AData" >Data</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Show.html#t%3AShow" >Show</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ix.html#t%3AIx" >Ix</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Bits.html#t%3ABits" >Bits</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Foreign-Storable.html#t%3AStorable" >Storable</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Printf.html#t%3APrintfArg" >PrintfArg</A > <A HREF="GHC-Exts.html#t%3AWord" >Word</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Float" ><A NAME="t%3AFloat" ></A ></A ><B >Float</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Single-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE single-precision type. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:F#" ><A NAME="v%3AF%23" ></A ></A ><B >F#</B > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AFloat%23" >Float#</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Float')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Float" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFloating" >Floating</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFractional" >Fractional</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Data.html#t%3AData" >Data</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFrac" >RealFrac</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Show.html#t%3AShow" >Show</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Foreign-Storable.html#t%3AStorable" >Storable</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Printf.html#t%3APrintfArg" >PrintfArg</A > <A HREF="GHC-Exts.html#t%3AFloat" >Float</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Double" ><A NAME="t%3ADouble" ></A ></A ><B >Double</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Double-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE double-precision type. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:D#" ><A NAME="v%3AD%23" ></A ></A ><B >D#</B > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3ADouble%23" >Double#</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Double')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Double" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFloating" >Floating</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFractional" >Fractional</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Data.html#t%3AData" >Data</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFrac" >RealFrac</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Show.html#t%3AShow" >Show</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Foreign-Storable.html#t%3AStorable" >Storable</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Printf.html#t%3APrintfArg" >PrintfArg</A > <A HREF="GHC-Exts.html#t%3ADouble" >Double</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Char" ><A NAME="t%3AChar" ></A ></A ><B >Char</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:C#" ><A NAME="v%3AC%23" ></A ></A ><B >C#</B > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AChar%23" >Char#</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Char')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Char" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Data.html#t%3AData" >Data</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Read.html#t%3ARead" >Read</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Show.html#t%3AShow" >Show</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ix.html#t%3AIx" >Ix</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Foreign-Storable.html#t%3AStorable" >Storable</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Printf.html#t%3AIsChar" >IsChar</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Printf.html#t%3APrintfArg" >PrintfArg</A > <A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Exts.html#t%3AIsString" >IsString</A > [<A HREF="GHC-Exts.html#t%3AChar" >Char</A >]</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Ptr" ><A NAME="t%3APtr" ></A ></A ><B >Ptr</B > a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >A value of type <TT ><TT ><A HREF="GHC-Exts.html#t%3APtr" >Ptr</A ></TT > a</TT > represents a pointer to an object, or an array of objects, which may be marshalled to or from Haskell values of type <TT >a</TT >. </P ><P >The type <TT >a</TT > will often be an instance of class Foreign.Storable.Storable which provides the marshalling operations. However this is not essential, and you can provide your own operations to access the pointer. For example you might write small foreign functions to get or set the fields of a C <TT >struct</TT >. </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Ptr" ><A NAME="v%3APtr" ></A ></A ><B >Ptr</B > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AAddr%23" >Addr#</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Ptr')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Ptr" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="GHC-Exts.html#t%3APtr" >Ptr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="GHC-Exts.html#t%3APtr" >Ptr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a => <A HREF="Data-Data.html#t%3AData" >Data</A > (<A HREF="GHC-Exts.html#t%3APtr" >Ptr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ord.html#t%3AOrd" >Ord</A > (<A HREF="GHC-Exts.html#t%3APtr" >Ptr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Show.html#t%3AShow" >Show</A > (<A HREF="GHC-Exts.html#t%3APtr" >Ptr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Foreign-Storable.html#t%3AStorable" >Storable</A > (<A HREF="GHC-Exts.html#t%3APtr" >Ptr</A > a)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:FunPtr" ><A NAME="t%3AFunPtr" ></A ></A ><B >FunPtr</B > a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >A value of type <TT ><TT ><A HREF="GHC-Exts.html#t%3AFunPtr" >FunPtr</A ></TT > a</TT > is a pointer to a function callable from foreign code. The type <TT >a</TT > will normally be a <EM >foreign type</EM >, a function type with zero or more arguments where </P ><UL ><LI > the argument types are <EM >marshallable foreign types</EM >, i.e. <TT ><A HREF="GHC-Exts.html#t%3AChar" >Char</A ></TT >, <TT ><A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TT >, Prelude.Double, Prelude.Float, <TT ><A HREF="Data-Bool.html#t%3ABool" >Bool</A ></TT >, Data.Int.Int8, Data.Int.Int16, Data.Int.Int32, Data.Int.Int64, Data.Word.Word8, Data.Word.Word16, Data.Word.Word32, Data.Word.Word64, <TT ><TT ><A HREF="GHC-Exts.html#t%3APtr" >Ptr</A ></TT > a</TT >, <TT ><TT ><A HREF="GHC-Exts.html#t%3AFunPtr" >FunPtr</A ></TT > a</TT >, <TT >Foreign.StablePtr.StablePtr a</TT > or a renaming of any of these using <TT >newtype</TT >. </LI ><LI > the return type is either a marshallable foreign type or has the form <TT >Prelude.IO t</TT > where <TT >t</TT > is a marshallable foreign type or <TT >()</TT >. </LI ></UL ><P >A value of type <TT ><TT ><A HREF="GHC-Exts.html#t%3AFunPtr" >FunPtr</A ></TT > a</TT > may be a pointer to a foreign function, either returned by another foreign function or imported with a a static address import like </P ><PRE > foreign import ccall "stdlib.h &free" p_free :: FunPtr (Ptr a -> IO ()) </PRE ><P >or a pointer to a Haskell function created using a <EM >wrapper</EM > stub declared to produce a <TT ><A HREF="GHC-Exts.html#t%3AFunPtr" >FunPtr</A ></TT > of the correct type. For example: </P ><PRE > type Compare = Int -> Int -> Bool foreign import ccall "wrapper" mkCompare :: Compare -> IO (FunPtr Compare) </PRE ><P >Calls to wrapper stubs like <TT >mkCompare</TT > allocate storage, which should be released with Foreign.Ptr.freeHaskellFunPtr when no longer required. </P ><P >To convert <TT ><A HREF="GHC-Exts.html#t%3AFunPtr" >FunPtr</A ></TT > values to corresponding Haskell functions, one can define a <EM >dynamic</EM > stub for the specific foreign type, e.g. </P ><PRE > type IntFunction = CInt -> IO () foreign import ccall "dynamic" mkFun :: FunPtr IntFunction -> IntFunction </PRE ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:FunPtr" ><A NAME="v%3AFunPtr" ></A ></A ><B >FunPtr</B > <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AAddr%23" >Addr#</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:FunPtr')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:FunPtr" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="GHC-Exts.html#t%3AFunPtr" >FunPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="GHC-Exts.html#t%3AFunPtr" >FunPtr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ord.html#t%3AOrd" >Ord</A > (<A HREF="GHC-Exts.html#t%3AFunPtr" >FunPtr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Show.html#t%3AShow" >Show</A > (<A HREF="GHC-Exts.html#t%3AFunPtr" >FunPtr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Foreign-Storable.html#t%3AStorable" >Storable</A > (<A HREF="GHC-Exts.html#t%3AFunPtr" >FunPtr</A > a)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="2" ><A NAME="2" >The maximum tuple size </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:maxTupleSize" ><A NAME="v%3AmaxTupleSize" ></A ></A ><B >maxTupleSize</B > :: <A HREF="GHC-Exts.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="3" ><A NAME="3" >Primitive operations </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" >module <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html" >GHC.Prim</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:shiftL#" ><A NAME="v%3AshiftL%23" ></A ></A ><B >shiftL#</B > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A ></TD ></TR ><TR ><TD CLASS="doc" >Shift the argument left by the specified number of bits (which must be non-negative). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:shiftRL#" ><A NAME="v%3AshiftRL%23" ></A ></A ><B >shiftRL#</B > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A ></TD ></TR ><TR ><TD CLASS="doc" >Shift the argument right by the specified number of bits (which must be non-negative). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:iShiftL#" ><A NAME="v%3AiShiftL%23" ></A ></A ><B >iShiftL#</B > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="doc" >Shift the argument left by the specified number of bits (which must be non-negative). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:iShiftRA#" ><A NAME="v%3AiShiftRA%23" ></A ></A ><B >iShiftRA#</B > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="doc" >Shift the argument right (signed) by the specified number of bits (which must be non-negative). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:iShiftRL#" ><A NAME="v%3AiShiftRL%23" ></A ></A ><B >iShiftRL#</B > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="doc" >Shift the argument right (unsigned) by the specified number of bits (which must be non-negative). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:uncheckedShiftL64#" ><A NAME="v%3AuncheckedShiftL64%23" ></A ></A ><B >uncheckedShiftL64#</B > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:uncheckedShiftRL64#" ><A NAME="v%3AuncheckedShiftRL64%23" ></A ></A ><B >uncheckedShiftRL64#</B > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AWord%23" >Word#</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:uncheckedIShiftL64#" ><A NAME="v%3AuncheckedIShiftL64%23" ></A ></A ><B >uncheckedIShiftL64#</B > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:uncheckedIShiftRA64#" ><A NAME="v%3AuncheckedIShiftRA64%23" ></A ></A ><B >uncheckedIShiftRA64#</B > :: <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A > -> <A HREF="../ghc-prim-0.2.0.0/GHC-Prim.html#t%3AInt%23" >Int#</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="4" ><A NAME="4" >Fusion </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:build" ><A NAME="v%3Abuild" ></A ></A ><B >build</B > :: <SPAN CLASS="keyword" >forall</SPAN > a. (<SPAN CLASS="keyword" >forall</SPAN > b. (a -> b -> b) -> b -> b) -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P >A list producer that can be fused with <TT ><A HREF="Data-List.html#v%3Afoldr" >foldr</A ></TT >. This function is merely </P ><PRE > build g = g (:) [] </PRE ><P >but GHC's simplifier will transform an expression of the form <TT ><TT ><A HREF="Data-List.html#v%3Afoldr" >foldr</A ></TT > k z (<TT ><A HREF="GHC-Exts.html#v%3Abuild" >build</A ></TT > g)</TT >, which may arise after inlining, to <TT >g k z</TT >, which avoids producing an intermediate list. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:augment" ><A NAME="v%3Aaugment" ></A ></A ><B >augment</B > :: <SPAN CLASS="keyword" >forall</SPAN > a. (<SPAN CLASS="keyword" >forall</SPAN > b. (a -> b -> b) -> b -> b) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P >A list producer that can be fused with <TT ><A HREF="Data-List.html#v%3Afoldr" >foldr</A ></TT >. This function is merely </P ><PRE > augment g xs = g (:) xs </PRE ><P >but GHC's simplifier will transform an expression of the form <TT ><TT ><A HREF="Data-List.html#v%3Afoldr" >foldr</A ></TT > k z (<TT ><A HREF="GHC-Exts.html#v%3Aaugment" >augment</A ></TT > g xs)</TT >, which may arise after inlining, to <TT >g k (<TT ><A HREF="Data-List.html#v%3Afoldr" >foldr</A ></TT > k z xs)</TT >, which avoids producing an intermediate list. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="5" ><A NAME="5" >Overloaded string literals </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:IsString" ><A NAME="t%3AIsString" ></A ></A ><B >IsString</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Class for string-like datastructures; used by the overloaded string extension (-foverloaded-strings in GHC). </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="section4" >Methods</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A NAME="v:fromString" ><A NAME="v%3AfromString" ></A ></A ><B >fromString</B > :: <A HREF="Data-Char.html#t%3AString" >String</A > -> a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:IsString')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:IsString" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="GHC-Exts.html#t%3AIsString" >IsString</A > [<A HREF="GHC-Exts.html#t%3AChar" >Char</A >]</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="6" ><A NAME="6" >Debugging </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:breakpoint" ><A NAME="v%3Abreakpoint" ></A ></A ><B >breakpoint</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:breakpointCond" ><A NAME="v%3AbreakpointCond" ></A ></A ><B >breakpointCond</B > :: <A HREF="Data-Bool.html#t%3ABool" >Bool</A > -> a -> a</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="7" ><A NAME="7" >Ids with special behaviour </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lazy" ><A NAME="v%3Alazy" ></A ></A ><B >lazy</B > :: a -> a</TD ></TR ><TR ><TD CLASS="doc" >The call '(lazy e)' means the same as e, but <TT ><A HREF="GHC-Exts.html#v%3Alazy" >lazy</A ></TT > has a magical strictness property: it is lazy in its first argument, even though its semantics is strict. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:inline" ><A NAME="v%3Ainline" ></A ></A ><B >inline</B > :: a -> a</TD ></TR ><TR ><TD CLASS="doc" >The call '(inline f)' reduces to f, but <TT ><A HREF="GHC-Exts.html#v%3Ainline" >inline</A ></TT > has a BuiltInRule that tries to inline f (if it has an unfolding) unconditionally The NOINLINE pragma arranges that inline only gets inlined (and hence eliminated) late in compilation, after the rule has had a god chance to fire. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="8" ><A NAME="8" >Transform comprehensions </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >newtype</SPAN > <A NAME="t:Down" ><A NAME="t%3ADown" ></A ></A ><B >Down</B > a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >The <TT ><A HREF="GHC-Exts.html#t%3ADown" >Down</A ></TT > type allows you to reverse sort order conveniently. A value of type <TT ><TT ><A HREF="GHC-Exts.html#t%3ADown" >Down</A ></TT > a</TT > contains a value of type <TT >a</TT > (represented as <TT ><TT ><A HREF="GHC-Exts.html#t%3ADown" >Down</A ></TT > a</TT >). If <TT >a</TT > has an <TT ><TT ><A HREF="Data-Ord.html#t%3AOrd" >Ord</A ></TT ></TT > instance associated with it then comparing two values thus wrapped will give you the opposite of their normal sort order. This is particularly useful when sorting in generalised list comprehensions, as in: <TT >then sortWith by <TT ><A HREF="GHC-Exts.html#t%3ADown" >Down</A ></TT > x</TT > </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Down" ><A NAME="v%3ADown" ></A ></A ><B >Down</B > a</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Down')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Down" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > a => <A HREF="Data-Eq.html#t%3AEq" >Eq</A > (<A HREF="GHC-Exts.html#t%3ADown" >Down</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Ord.html#t%3AOrd" >Ord</A > a => <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > (<A HREF="GHC-Exts.html#t%3ADown" >Down</A > a)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:groupWith" ><A NAME="v%3AgroupWith" ></A ></A ><B >groupWith</B > :: <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > b => (a -> b) -> [a] -> [[a]]</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="GHC-Exts.html#v%3AgroupWith" >groupWith</A ></TT > function uses the user supplied function which projects an element out of every list element in order to to first sort the input list and then to form groups by equality on these projected elements </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sortWith" ><A NAME="v%3AsortWith" ></A ></A ><B >sortWith</B > :: <A HREF="Data-Ord.html#t%3AOrd" >Ord</A > b => (a -> b) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="GHC-Exts.html#v%3AsortWith" >sortWith</A ></TT > function sorts a list of elements using the user supplied function to project something out of each element </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:the" ><A NAME="v%3Athe" ></A ></A ><B >the</B > :: <A HREF="Data-Eq.html#t%3AEq" >Eq</A > a => [a] -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="GHC-Exts.html#v%3Athe" >the</A ></TT > ensures that all the elements of the list are identical and then returns that unique element </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="9" ><A NAME="9" >Event logging </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:traceEvent" ><A NAME="v%3AtraceEvent" ></A ></A ><B >traceEvent</B > :: <A HREF="Data-Char.html#t%3AString" >String</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >