Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 1f2b142b9d2ef4849a6f5316fa1c5b12 > files > 1963

ghc-6.10.4-1mdv2010.0.i586.rpm

<!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
>MkCore</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_MkCore.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"
>ghc-6.10.4: The GHC API</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"
>MkCore</FONT
></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"
>Constructing normal syntax
</A
></DT
><DT
><A HREF="#2"
>Constructing boxed literals
</A
></DT
><DT
><A HREF="#3"
>Constructing general big tuples
</A
></DT
><DT
><A HREF="#4"
>Constructing small tuples
</A
></DT
><DT
><A HREF="#5"
>Constructing big tuples
</A
></DT
><DT
><A HREF="#6"
>Deconstructing small tuples
</A
></DT
><DT
><A HREF="#7"
>Deconstructing big tuples
</A
></DT
><DT
><A HREF="#8"
>Constructing list expressions
</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"
>Handy functions for creating much Core syntax
</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"
><A HREF="#v%3AmkCoreLet"
>mkCoreLet</A
> :: <A HREF="CoreSyn.html#t%3ACoreBind"
>CoreBind</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkCoreLets"
>mkCoreLets</A
> :: [<A HREF="CoreSyn.html#t%3ACoreBind"
>CoreBind</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkCoreApp"
>mkCoreApp</A
> :: <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkCoreApps"
>mkCoreApps</A
> :: <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkCoreConApps"
>mkCoreConApps</A
> :: <A HREF="DataCon.html#t%3ADataCon"
>DataCon</A
> -&gt; [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkCoreLams"
>mkCoreLams</A
> :: [<A HREF="CoreSyn.html#t%3ACoreBndr"
>CoreBndr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkWordExpr"
>mkWordExpr</A
> :: <A HREF="../integer/GHC-Integer.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkWordExprWord"
>mkWordExprWord</A
> :: <A HREF="../base/Data-Word.html#t%3AWord"
>Word</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkIntExpr"
>mkIntExpr</A
> :: <A HREF="../integer/GHC-Integer.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkIntExprInt"
>mkIntExprInt</A
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkIntegerExpr"
>mkIntegerExpr</A
> :: <A HREF="HscTypes.html#t%3AMonadThings"
>MonadThings</A
> m =&gt; <A HREF="../integer/GHC-Integer.html#t%3AInteger"
>Integer</A
> -&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkFloatExpr"
>mkFloatExpr</A
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat"
>Float</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkDoubleExpr"
>mkDoubleExpr</A
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble"
>Double</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkCharExpr"
>mkCharExpr</A
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AChar"
>Char</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkStringExpr"
>mkStringExpr</A
> :: <A HREF="HscTypes.html#t%3AMonadThings"
>MonadThings</A
> m =&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkStringExprFS"
>mkStringExprFS</A
> :: <A HREF="HscTypes.html#t%3AMonadThings"
>MonadThings</A
> m =&gt; <A HREF="FastString.html#t%3AFastString"
>FastString</A
> -&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkChunkified"
>mkChunkified</A
> ::  ([a] -&gt; a) -&gt; [a] -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkCoreVarTup"
>mkCoreVarTup</A
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkCoreVarTupTy"
>mkCoreVarTupTy</A
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkCoreTup"
>mkCoreTup</A
> :: [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkCoreTupTy"
>mkCoreTupTy</A
> :: [<A HREF="Type.html#t%3AType"
>Type</A
>] -&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkBigCoreVarTup"
>mkBigCoreVarTup</A
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkBigCoreVarTupTy"
>mkBigCoreVarTupTy</A
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkBigCoreTup"
>mkBigCoreTup</A
> :: [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkBigCoreTupTy"
>mkBigCoreTupTy</A
> :: [<A HREF="Type.html#t%3AType"
>Type</A
>] -&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkSmallTupleSelector"
>mkSmallTupleSelector</A
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkSmallTupleCase"
>mkSmallTupleCase</A
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkTupleSelector"
>mkTupleSelector</A
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkTupleCase"
>mkTupleCase</A
> :: <A HREF="UniqSupply.html#t%3AUniqSupply"
>UniqSupply</A
> -&gt; [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkNilExpr"
>mkNilExpr</A
> :: <A HREF="Type.html#t%3AType"
>Type</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkConsExpr"
>mkConsExpr</A
> :: <A HREF="Type.html#t%3AType"
>Type</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkListExpr"
>mkListExpr</A
> :: <A HREF="Type.html#t%3AType"
>Type</A
> -&gt; [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkFoldrExpr"
>mkFoldrExpr</A
> :: <A HREF="HscTypes.html#t%3AMonadThings"
>MonadThings</A
> m =&gt; <A HREF="Type.html#t%3AType"
>Type</A
> -&gt; <A HREF="Type.html#t%3AType"
>Type</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkBuildExpr"
>mkBuildExpr</A
> :: (<A HREF="HscTypes.html#t%3AMonadThings"
>MonadThings</A
> m, <A HREF="UniqSupply.html#t%3AMonadUnique"
>MonadUnique</A
> m) =&gt; <A HREF="Type.html#t%3AType"
>Type</A
> -&gt; ((<A HREF="Var.html#t%3AId"
>Id</A
>, <A HREF="Type.html#t%3AType"
>Type</A
>) -&gt; (<A HREF="Var.html#t%3AId"
>Id</A
>, <A HREF="Type.html#t%3AType"
>Type</A
>) -&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>) -&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</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"
>Constructing normal syntax
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCoreLet"
><A NAME="v%3AmkCoreLet"
></A
></A
><B
>mkCoreLet</B
> :: <A HREF="CoreSyn.html#t%3ACoreBind"
>CoreBind</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Bind a binding group over an expression, using a <TT
>let</TT
> or <TT
>case</TT
> as
 appropriate (see <A HREF="CoreSyn.html#let_app_invariant"
>CoreSyn</A
>)
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCoreLets"
><A NAME="v%3AmkCoreLets"
></A
></A
><B
>mkCoreLets</B
> :: [<A HREF="CoreSyn.html#t%3ACoreBind"
>CoreBind</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Bind a list of binding groups over an expression. The leftmost binding
 group becomes the outermost group in the resulting expression
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCoreApp"
><A NAME="v%3AmkCoreApp"
></A
></A
><B
>mkCoreApp</B
> :: <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Construct an expression which represents the application of one expression
 to the other
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCoreApps"
><A NAME="v%3AmkCoreApps"
></A
></A
><B
>mkCoreApps</B
> :: <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Construct an expression which represents the application of a number of
 expressions to another. The leftmost expression in the list is applied first
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCoreConApps"
><A NAME="v%3AmkCoreConApps"
></A
></A
><B
>mkCoreConApps</B
> :: <A HREF="DataCon.html#t%3ADataCon"
>DataCon</A
> -&gt; [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Construct an expression which represents the application of a number of
 expressions to that of a data constructor expression. The leftmost expression
 in the list is applied first
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCoreLams"
><A NAME="v%3AmkCoreLams"
></A
></A
><B
>mkCoreLams</B
> :: [<A HREF="CoreSyn.html#t%3ACoreBndr"
>CoreBndr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a lambda where the given expression has a number of variables
 bound over it. The leftmost binder is that bound by the outermost
 lambda in the result
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Constructing boxed literals
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkWordExpr"
><A NAME="v%3AmkWordExpr"
></A
></A
><B
>mkWordExpr</B
> :: <A HREF="../integer/GHC-Integer.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> which will evaluate to the a <TT
>Word</TT
> with the given value
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkWordExprWord"
><A NAME="v%3AmkWordExprWord"
></A
></A
><B
>mkWordExprWord</B
> :: <A HREF="../base/Data-Word.html#t%3AWord"
>Word</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> which will evaluate to the given <TT
>Word</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkIntExpr"
><A NAME="v%3AmkIntExpr"
></A
></A
><B
>mkIntExpr</B
> :: <A HREF="../integer/GHC-Integer.html#t%3AInteger"
>Integer</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> which will evaluate to the given <TT
>Int</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkIntExprInt"
><A NAME="v%3AmkIntExprInt"
></A
></A
><B
>mkIntExprInt</B
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> which will evaluate to the given <TT
>Int</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkIntegerExpr"
><A NAME="v%3AmkIntegerExpr"
></A
></A
><B
>mkIntegerExpr</B
> :: <A HREF="HscTypes.html#t%3AMonadThings"
>MonadThings</A
> m =&gt; <A HREF="../integer/GHC-Integer.html#t%3AInteger"
>Integer</A
> -&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> which will evaluate to the given <TT
>Integer</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkFloatExpr"
><A NAME="v%3AmkFloatExpr"
></A
></A
><B
>mkFloatExpr</B
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat"
>Float</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> which will evaluate to the given <TT
>Float</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkDoubleExpr"
><A NAME="v%3AmkDoubleExpr"
></A
></A
><B
>mkDoubleExpr</B
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble"
>Double</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> which will evaluate to the given <TT
>Double</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCharExpr"
><A NAME="v%3AmkCharExpr"
></A
></A
><B
>mkCharExpr</B
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AChar"
>Char</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> which will evaluate to the given <TT
>Char</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkStringExpr"
><A NAME="v%3AmkStringExpr"
></A
></A
><B
>mkStringExpr</B
> :: <A HREF="HscTypes.html#t%3AMonadThings"
>MonadThings</A
> m =&gt; <A HREF="../base/Data-Char.html#t%3AString"
>String</A
> -&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> which will evaluate to the given <TT
>String</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkStringExprFS"
><A NAME="v%3AmkStringExprFS"
></A
></A
><B
>mkStringExprFS</B
> :: <A HREF="HscTypes.html#t%3AMonadThings"
>MonadThings</A
> m =&gt; <A HREF="FastString.html#t%3AFastString"
>FastString</A
> -&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> which will evaluate to a string morally equivalent to the given <TT
>FastString</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>Constructing general big tuples
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
><P
><A NAME="big_tuples"
><A NAME="big_tuples"
></A
></A
>
</P
><P
>GHCs built in tuples can only go up to <TT
><A HREF="Constants.html#v%3AmAX_TUPLE_SIZE"
>mAX_TUPLE_SIZE</A
></TT
> in arity, but
 we might concievably want to build such a massive tuple as part of the
 output of a desugaring stage (notably that for list comprehensions).
</P
><P
>We call tuples above this size &quot;big tuples&quot;, and emulate them by
 creating and pattern matching on &gt;nested&lt; tuples that are expressible
 by GHC.
</P
><P
>Nesting policy: it's better to have a 2-tuple of 10-tuples (3 objects)
 than a 10-tuple of 2-tuples (11 objects), so we want the leaves of any
 construction to be big.
</P
><P
>If you just use the <TT
><A HREF="MkCore.html#v%3AmkBigCoreTup"
>mkBigCoreTup</A
></TT
>, <TT
><A HREF="MkCore.html#v%3AmkBigCoreVarTupTy"
>mkBigCoreVarTupTy</A
></TT
>, <TT
><A HREF="MkCore.html#v%3AmkTupleSelector"
>mkTupleSelector</A
></TT
>
 and <TT
><A HREF="MkCore.html#v%3AmkTupleCase"
>mkTupleCase</A
></TT
> functions to do all your work with tuples you should be
 fine, and not have to worry about the arity limitation at all.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkChunkified"
><A NAME="v%3AmkChunkified"
></A
></A
><B
>mkChunkified</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: </TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; [a] -&gt; a</TD
><TD CLASS="rdoc"
>&quot;Small&quot; constructor function, of maximum input arity <TT
><A HREF="Constants.html#v%3AmAX_TUPLE_SIZE"
>mAX_TUPLE_SIZE</A
></TT
>
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; [a]</TD
><TD CLASS="rdoc"
>Possible &quot;big&quot; list of things to construct from
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; a</TD
><TD CLASS="rdoc"
>Constructed thing made possible by recursive decomposition
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Lifts a &quot;small&quot; constructor into a &quot;big&quot; constructor by recursive decompositon
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="4"
><A NAME="4"
>Constructing small tuples
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCoreVarTup"
><A NAME="v%3AmkCoreVarTup"
></A
></A
><B
>mkCoreVarTup</B
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Build a small tuple holding the specified variables
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCoreVarTupTy"
><A NAME="v%3AmkCoreVarTupTy"
></A
></A
><B
>mkCoreVarTupTy</B
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
></TR
><TR
><TD CLASS="doc"
>Bulid the type of a small tuple that holds the specified variables
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCoreTup"
><A NAME="v%3AmkCoreTup"
></A
></A
><B
>mkCoreTup</B
> :: [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Build a small tuple holding the specified expressions
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkCoreTupTy"
><A NAME="v%3AmkCoreTupTy"
></A
></A
><B
>mkCoreTupTy</B
> :: [<A HREF="Type.html#t%3AType"
>Type</A
>] -&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
></TR
><TR
><TD CLASS="doc"
>Build the type of a small tuple that holds the specified type of thing
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="5"
><A NAME="5"
>Constructing big tuples
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkBigCoreVarTup"
><A NAME="v%3AmkBigCoreVarTup"
></A
></A
><B
>mkBigCoreVarTup</B
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Build a big tuple holding the specified variables
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkBigCoreVarTupTy"
><A NAME="v%3AmkBigCoreVarTupTy"
></A
></A
><B
>mkBigCoreVarTupTy</B
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
></TR
><TR
><TD CLASS="doc"
>Build the type of a big tuple that holds the specified variables
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkBigCoreTup"
><A NAME="v%3AmkBigCoreTup"
></A
></A
><B
>mkBigCoreTup</B
> :: [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Build a big tuple holding the specified expressions
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkBigCoreTupTy"
><A NAME="v%3AmkBigCoreTupTy"
></A
></A
><B
>mkBigCoreTupTy</B
> :: [<A HREF="Type.html#t%3AType"
>Type</A
>] -&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
></TR
><TR
><TD CLASS="doc"
>Build the type of a big tuple that holds the specified type of thing
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="6"
><A NAME="6"
>Deconstructing small tuples
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkSmallTupleSelector"
><A NAME="v%3AmkSmallTupleSelector"
></A
></A
><B
>mkSmallTupleSelector</B
> :: [<A HREF="Var.html#t%3AId"
>Id</A
>] -&gt; <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Like <TT
><A HREF="MkCore.html#v%3AmkTupleSelector"
>mkTupleSelector</A
></TT
> but for tuples that are guaranteed
 never to be &quot;big&quot;.
</P
><PRE
> mkSmallTupleSelector [x] x v e = [| e |]
 mkSmallTupleSelector [x,y,z] x v e = [| case e of v { (x,y,z) -&gt; x } |]
</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkSmallTupleCase"
><A NAME="v%3AmkSmallTupleCase"
></A
></A
><B
>mkSmallTupleCase</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: [<A HREF="Var.html#t%3AId"
>Id</A
>]</TD
><TD CLASS="rdoc"
>The tuple args
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
>Body of the case
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Var.html#t%3AId"
>Id</A
></TD
><TD CLASS="rdoc"
>A variable of the same type as the scrutinee
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
>Scrutinee
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>As <TT
><A HREF="MkCore.html#v%3AmkTupleCase"
>mkTupleCase</A
></TT
>, but for a tuple that is small enough to be guaranteed
 not to need nesting.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="7"
><A NAME="7"
>Deconstructing big tuples
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkTupleSelector"
><A NAME="v%3AmkTupleSelector"
></A
></A
><B
>mkTupleSelector</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: [<A HREF="Var.html#t%3AId"
>Id</A
>]</TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>s to pattern match the tuple against
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Var.html#t%3AId"
>Id</A
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> to select
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Var.html#t%3AId"
>Id</A
></TD
><TD CLASS="rdoc"
>A variable of the same type as the scrutinee
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
>Scrutinee
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
>Selector expression
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><P
>Builds a selector which scrutises the given
 expression and extracts the one name from the list given.
 If you want the no-shadowing rule to apply, the caller
 is responsible for making sure that none of these names
 are in scope.
</P
><P
>If there is just one <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> in the tuple, then the selector is
 just the identity.
</P
><P
>If necessary, we pattern match on a &quot;big&quot; tuple.
</P
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkTupleCase"
><A NAME="v%3AmkTupleCase"
></A
></A
><B
>mkTupleCase</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="UniqSupply.html#t%3AUniqSupply"
>UniqSupply</A
></TD
><TD CLASS="rdoc"
>For inventing names of intermediate variables
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; [<A HREF="Var.html#t%3AId"
>Id</A
>]</TD
><TD CLASS="rdoc"
>The tuple identifiers to pattern match on
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
>Body of the case
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Var.html#t%3AId"
>Id</A
></TD
><TD CLASS="rdoc"
>A variable of the same type as the scrutinee
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
>Scrutinee
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><P
>A generalization of <TT
><A HREF="MkCore.html#v%3AmkTupleSelector"
>mkTupleSelector</A
></TT
>, allowing the body
 of the case to be an arbitrary expression.
</P
><P
>To avoid shadowing, we use uniques to invent new variables.
</P
><P
>If necessary we pattern match on a &quot;big&quot; tuple.
</P
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="8"
><A NAME="8"
>Constructing list expressions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkNilExpr"
><A NAME="v%3AmkNilExpr"
></A
></A
><B
>mkNilExpr</B
> :: <A HREF="Type.html#t%3AType"
>Type</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Makes a list <TT
>[]</TT
> for lists of the specified type
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkConsExpr"
><A NAME="v%3AmkConsExpr"
></A
></A
><B
>mkConsExpr</B
> :: <A HREF="Type.html#t%3AType"
>Type</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Makes a list <TT
>(:)</TT
> for lists of the specified type
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkListExpr"
><A NAME="v%3AmkListExpr"
></A
></A
><B
>mkListExpr</B
> :: <A HREF="Type.html#t%3AType"
>Type</A
> -&gt; [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
></TR
><TR
><TD CLASS="doc"
>Make a list containing the given expressions, where the list has the given type
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkFoldrExpr"
><A NAME="v%3AmkFoldrExpr"
></A
></A
><B
>mkFoldrExpr</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="HscTypes.html#t%3AMonadThings"
>MonadThings</A
> m</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
><TD CLASS="rdoc"
>Element type of the list
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
><TD CLASS="rdoc"
>Fold result type
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
><A HREF="Cons.html"
>Cons</A
> function expression for the fold
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
><A HREF="Nil.html"
>Nil</A
> expression for the fold
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
>List expression being folded acress
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Make a fully applied <TT
><A HREF="../base/Data-List.html#v%3Afoldr"
>foldr</A
></TT
> expression
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkBuildExpr"
><A NAME="v%3AmkBuildExpr"
></A
></A
><B
>mkBuildExpr</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: (<A HREF="HscTypes.html#t%3AMonadThings"
>MonadThings</A
> m, <A HREF="UniqSupply.html#t%3AMonadUnique"
>MonadUnique</A
> m)</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="Type.html#t%3AType"
>Type</A
></TD
><TD CLASS="rdoc"
>Type of list elements to be built
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; (<A HREF="Var.html#t%3AId"
>Id</A
>, <A HREF="Type.html#t%3AType"
>Type</A
>) -&gt; (<A HREF="Var.html#t%3AId"
>Id</A
>, <A HREF="Type.html#t%3AType"
>Type</A
>) -&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
>Function that, given information about the <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>s
 of the binders for the build worker function, returns
 the body of that worker
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; m <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Make a build expression applied to a locally-bound worker function
</TD
></TR
></TABLE
></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.4.2</TD
></TR
></TABLE
></BODY
></HTML
>