Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 70ec89744a04da80369b4702b2c37256 > files > 786

ghc-doc-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
>IdInfo</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_IdInfo.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"
>IdInfo</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"
>The GlobalIdDetails type
</A
></DT
><DT
><A HREF="#2"
>The IdInfo type
</A
></DT
><DD
><DL
><DT
><A HREF="#3"
>Zapping various forms of Info
</A
></DT
><DT
><A HREF="#4"
>The ArityInfo type
</A
></DT
><DT
><A HREF="#5"
>Demand and strictness Info
</A
></DT
><DT
><A HREF="#6"
>The WorkerInfo type
</A
></DT
><DT
><A HREF="#7"
>Unfolding Info
</A
></DT
><DT
><A HREF="#8"
>The InlinePragInfo type
</A
></DT
><DT
><A HREF="#9"
>The OccInfo type
</A
></DT
><DT
><A HREF="#10"
>The SpecInfo type
</A
></DT
><DT
><A HREF="#11"
>The CAFInfo type
</A
></DT
><DT
><A HREF="#12"
>The LBVarInfo type
</A
></DT
><DT
><A HREF="#13"
>Tick-box Info
</A
></DT
></DL
></DD
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></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"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AGlobalIdDetails"
>GlobalIdDetails</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AVanillaGlobal"
>VanillaGlobal</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ARecordSelId"
>RecordSelId</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3Asel_tycon"
>sel_tycon</A
> :: <A HREF="TyCon.html#t%3ATyCon"
>TyCon</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3Asel_label"
>sel_label</A
> :: <A HREF="TyCon.html#t%3AFieldLabel"
>FieldLabel</A
></TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3Asel_naughty"
>sel_naughty</A
> :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ADataConWorkId"
>DataConWorkId</A
> <A HREF="DataCon.html#t%3ADataCon"
>DataCon</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ADataConWrapId"
>DataConWrapId</A
> <A HREF="DataCon.html#t%3ADataCon"
>DataCon</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AClassOpId"
>ClassOpId</A
> <A HREF="Class.html#t%3AClass"
>Class</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3APrimOpId"
>PrimOpId</A
> <A HREF="PrimOp.html#t%3APrimOp"
>PrimOp</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AFCallId"
>FCallId</A
> <A HREF="ForeignCall.html#t%3AForeignCall"
>ForeignCall</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ATickBoxOpId"
>TickBoxOpId</A
> <A HREF="IdInfo.html#t%3ATickBoxOp"
>TickBoxOp</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ANotGlobalId"
>NotGlobalId</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnotGlobalId"
>notGlobalId</A
> :: <A HREF="IdInfo.html#t%3AGlobalIdDetails"
>GlobalIdDetails</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AIdInfo"
>IdInfo</A
> </TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AvanillaIdInfo"
>vanillaIdInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnoCafIdInfo"
>noCafIdInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AseqIdInfo"
>seqIdInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmegaSeqIdInfo"
>megaSeqIdInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AzapLamInfo"
>zapLamInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AzapDemandInfo"
>zapDemandInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AzapFragileInfo"
>zapFragileInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AArityInfo"
>ArityInfo</A
> = <A HREF="BasicTypes.html#t%3AArity"
>Arity</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AunknownArity"
>unknownArity</A
> :: <A HREF="BasicTypes.html#t%3AArity"
>Arity</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AarityInfo"
>arityInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AArityInfo"
>ArityInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetArityInfo"
>setArityInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AArityInfo"
>ArityInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AppArityInfo"
>ppArityInfo</A
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Outputable.html#t%3ASDoc"
>SDoc</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnewStrictnessInfo"
>newStrictnessInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3AStrictSig"
>StrictSig</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetNewStrictnessInfo"
>setNewStrictnessInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3AStrictSig"
>StrictSig</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnewDemandInfo"
>newDemandInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3ADemand"
>Demand</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetNewDemandInfo"
>setNewDemandInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3ADemand"
>Demand</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApprNewStrictness"
>pprNewStrictness</A
> :: <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3AStrictSig"
>StrictSig</A
> -&gt; <A HREF="Outputable.html#t%3ASDoc"
>SDoc</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetAllStrictnessInfo"
>setAllStrictnessInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3AStrictSig"
>StrictSig</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AWorkerInfo"
>WorkerInfo</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3ANoWorker"
>NoWorker</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AHasWorker"
>HasWorker</A
> <A HREF="Var.html#t%3AId"
>Id</A
> <A HREF="BasicTypes.html#t%3AArity"
>Arity</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AworkerExists"
>workerExists</A
> :: <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AwrapperArity"
>wrapperArity</A
> :: <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
> -&gt; <A HREF="BasicTypes.html#t%3AArity"
>Arity</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AworkerId"
>workerId</A
> :: <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
> -&gt; <A HREF="Var.html#t%3AId"
>Id</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AworkerInfo"
>workerInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetWorkerInfo"
>setWorkerInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AppWorkerInfo"
>ppWorkerInfo</A
> :: <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
> -&gt; <A HREF="Outputable.html#t%3ASDoc"
>SDoc</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AunfoldingInfo"
>unfoldingInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="CoreSyn.html#t%3AUnfolding"
>Unfolding</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetUnfoldingInfo"
>setUnfoldingInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="CoreSyn.html#t%3AUnfolding"
>Unfolding</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetUnfoldingInfoLazily"
>setUnfoldingInfoLazily</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="CoreSyn.html#t%3AUnfolding"
>Unfolding</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AInlinePragInfo"
>InlinePragInfo</A
> = <A HREF="BasicTypes.html#t%3AActivation"
>Activation</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AinlinePragInfo"
>inlinePragInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AInlinePragInfo"
>InlinePragInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetInlinePragInfo"
>setInlinePragInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AInlinePragInfo"
>InlinePragInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AOccInfo"
>OccInfo</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3ANoOccInfo"
>NoOccInfo</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AIAmDead"
>IAmDead</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AOneOcc"
>OneOcc</A
> !<A HREF="IdInfo.html#t%3AInsideLam"
>InsideLam</A
> !<A HREF="IdInfo.html#t%3AOneBranch"
>OneBranch</A
> !<A HREF="BasicTypes.html#t%3AInterestingCxt"
>InterestingCxt</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AIAmALoopBreaker"
>IAmALoopBreaker</A
> !RulesOnly</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AisFragileOcc"
>isFragileOcc</A
> :: <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AisDeadOcc"
>isDeadOcc</A
> :: <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AisLoopBreaker"
>isLoopBreaker</A
> :: <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AoccInfo"
>occInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetOccInfo"
>setOccInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AInsideLam"
>InsideLam</A
> = <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AOneBranch"
>OneBranch</A
> = <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AinsideLam"
>insideLam</A
> :: <A HREF="IdInfo.html#t%3AInsideLam"
>InsideLam</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnotInsideLam"
>notInsideLam</A
> :: <A HREF="IdInfo.html#t%3AInsideLam"
>InsideLam</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AoneBranch"
>oneBranch</A
> :: <A HREF="IdInfo.html#t%3AOneBranch"
>OneBranch</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnotOneBranch"
>notOneBranch</A
> :: <A HREF="IdInfo.html#t%3AOneBranch"
>OneBranch</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ASpecInfo"
>SpecInfo</A
>  = <A HREF="#v%3ASpecInfo"
>SpecInfo</A
> [<A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
>] <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AisEmptySpecInfo"
>isEmptySpecInfo</A
> :: <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AspecInfoFreeVars"
>specInfoFreeVars</A
> :: <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AspecInfoRules"
>specInfoRules</A
> :: <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; [<A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
>]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AseqSpecInfo"
>seqSpecInfo</A
> :: <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetSpecInfoHead"
>setSpecInfoHead</A
> :: <A HREF="Name.html#t%3AName"
>Name</A
> -&gt; <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AspecInfo"
>specInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetSpecInfo"
>setSpecInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ACafInfo"
>CafInfo</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3AMayHaveCafRefs"
>MayHaveCafRefs</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ANoCafRefs"
>NoCafRefs</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AppCafInfo"
>ppCafInfo</A
> :: <A HREF="IdInfo.html#t%3ACafInfo"
>CafInfo</A
> -&gt; <A HREF="Outputable.html#t%3ASDoc"
>SDoc</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmayHaveCafRefs"
>mayHaveCafRefs</A
> :: <A HREF="IdInfo.html#t%3ACafInfo"
>CafInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcafInfo"
>cafInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ACafInfo"
>CafInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetCafInfo"
>setCafInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ACafInfo"
>CafInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ALBVarInfo"
>LBVarInfo</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3ANoLBVarInfo"
>NoLBVarInfo</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3AIsOneShotLambda"
>IsOneShotLambda</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnoLBVarInfo"
>noLBVarInfo</A
> :: <A HREF="IdInfo.html#t%3ALBVarInfo"
>LBVarInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AhasNoLBVarInfo"
>hasNoLBVarInfo</A
> :: <A HREF="IdInfo.html#t%3ALBVarInfo"
>LBVarInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlbvarInfo"
>lbvarInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ALBVarInfo"
>LBVarInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsetLBVarInfo"
>setLBVarInfo</A
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ALBVarInfo"
>LBVarInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ATickBoxOp"
>TickBoxOp</A
>  = <A HREF="#v%3ATickBox"
>TickBox</A
> <A HREF="Module.html#t%3AModule"
>Module</A
> !<A HREF="IdInfo.html#t%3ATickBoxId"
>TickBoxId</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ATickBoxId"
>TickBoxId</A
> = <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</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"
>The GlobalIdDetails type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:GlobalIdDetails"
><A NAME="t%3AGlobalIdDetails"
></A
></A
><B
>GlobalIdDetails</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>Information pertaining to global <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>s. See <A HREF="Var.html#globalvslocal"
>Var</A
> for the distinction 
 between global and local in this context
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:VanillaGlobal"
><A NAME="v%3AVanillaGlobal"
></A
></A
><B
>VanillaGlobal</B
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> is imported from elsewhere or is a default method <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:RecordSelId"
><A NAME="v%3ARecordSelId"
></A
></A
><B
>RecordSelId</B
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> for a record selector
</TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:sel_tycon"
><A NAME="v%3Asel_tycon"
></A
></A
><B
>sel_tycon</B
> :: <A HREF="TyCon.html#t%3ATyCon"
>TyCon</A
></TD
><TD CLASS="rdoc"
>For a data type family, this is the <EM
>instance</EM
> <TT
><A HREF="TyCon.html#t%3ATyCon"
>TyCon</A
></TT
>
   not the family <TT
><A HREF="TyCon.html#t%3ATyCon"
>TyCon</A
></TT
>
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:sel_label"
><A NAME="v%3Asel_label"
></A
></A
><B
>sel_label</B
> :: <A HREF="TyCon.html#t%3AFieldLabel"
>FieldLabel</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:sel_naughty"
><A NAME="v%3Asel_naughty"
></A
></A
><B
>sel_naughty</B
> :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:DataConWorkId"
><A NAME="v%3ADataConWorkId"
></A
></A
><B
>DataConWorkId</B
> <A HREF="DataCon.html#t%3ADataCon"
>DataCon</A
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> is for a data constructor <EM
>worker</EM
>
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:DataConWrapId"
><A NAME="v%3ADataConWrapId"
></A
></A
><B
>DataConWrapId</B
> <A HREF="DataCon.html#t%3ADataCon"
>DataCon</A
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> is for a data constructor <EM
>wrapper</EM
>
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:ClassOpId"
><A NAME="v%3AClassOpId"
></A
></A
><B
>ClassOpId</B
> <A HREF="Class.html#t%3AClass"
>Class</A
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> is an operation of a class
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:PrimOpId"
><A NAME="v%3APrimOpId"
></A
></A
><B
>PrimOpId</B
> <A HREF="PrimOp.html#t%3APrimOp"
>PrimOp</A
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> is for a primitive operator
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:FCallId"
><A NAME="v%3AFCallId"
></A
></A
><B
>FCallId</B
> <A HREF="ForeignCall.html#t%3AForeignCall"
>ForeignCall</A
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> is for a foreign call
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:TickBoxOpId"
><A NAME="v%3ATickBoxOpId"
></A
></A
><B
>TickBoxOpId</B
> <A HREF="IdInfo.html#t%3ATickBoxOp"
>TickBoxOp</A
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> is for a HPC tick box (both traditional and binary)
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:NotGlobalId"
><A NAME="v%3ANotGlobalId"
></A
></A
><B
>NotGlobalId</B
></TD
><TD CLASS="rdoc"
>Used as a convenient extra return value from globalIdDetails
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:GlobalIdDetails')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:GlobalIdDetails" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Outputable.html#t%3AOutputable"
>Outputable</A
> <A HREF="IdInfo.html#t%3AGlobalIdDetails"
>GlobalIdDetails</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:notGlobalId"
><A NAME="v%3AnotGlobalId"
></A
></A
><B
>notGlobalId</B
> :: <A HREF="IdInfo.html#t%3AGlobalIdDetails"
>GlobalIdDetails</A
></TD
></TR
><TR
><TD CLASS="doc"
>An entirely unhelpful <TT
><A HREF="IdInfo.html#t%3AGlobalIdDetails"
>GlobalIdDetails</A
></TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>The IdInfo type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:IdInfo"
><A NAME="t%3AIdInfo"
></A
></A
><B
>IdInfo</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><P
>An <TT
><A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TT
> gives <EM
>optional</EM
> information about an <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>.  If
 present it never lies, but it may not be present, in which case there
 is always a conservative assumption which can be made.
</P
><P
>Two <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>s may have different info even though they have the same
 Unique (and are hence the same <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>); for example, one might lack
 the properties attached to the other.
</P
><P
>The <TT
><A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TT
> gives information about the value, or definition, of the
 <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>.  It does not contain information about the Id's usage,
 except for demandInfo and <TT
><A HREF="IdInfo.html#v%3AlbvarInfo"
>lbvarInfo</A
></TT
>.
</P
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:vanillaIdInfo"
><A NAME="v%3AvanillaIdInfo"
></A
></A
><B
>vanillaIdInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>Basic <TT
><A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TT
> that carries no useful information whatsoever
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:noCafIdInfo"
><A NAME="v%3AnoCafIdInfo"
></A
></A
><B
>noCafIdInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>More informative <TT
><A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TT
> we can use when we know the <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> has no CAF references
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:seqIdInfo"
><A NAME="v%3AseqIdInfo"
></A
></A
><B
>seqIdInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
>Just evaluate the <TT
><A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TT
> to WHNF
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:megaSeqIdInfo"
><A NAME="v%3AmegaSeqIdInfo"
></A
></A
><B
>megaSeqIdInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="doc"
>Evaluate all the fields of the <TT
><A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TT
> that are generally demanded by the
 compiler
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="3"
><A NAME="3"
>Zapping various forms of Info
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:zapLamInfo"
><A NAME="v%3AzapLamInfo"
></A
></A
><B
>zapLamInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
><P
>This is used to remove information on lambda binders that we have
 setup as part of a lambda group, assuming they will be applied all at once,
 but turn out to be part of an unsaturated lambda as in e.g:
</P
><PRE
> (\x1. \x2. e) arg1
</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:zapDemandInfo"
><A NAME="v%3AzapDemandInfo"
></A
></A
><B
>zapDemandInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>Remove demand info on the <TT
><A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TT
> if it is present, otherwise return <TT
>Nothing</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:zapFragileInfo"
><A NAME="v%3AzapFragileInfo"
></A
></A
><B
>zapFragileInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>Zap info that depends on free variables
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="4"
><A NAME="4"
>The ArityInfo type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:ArityInfo"
><A NAME="t%3AArityInfo"
></A
></A
><B
>ArityInfo</B
> = <A HREF="BasicTypes.html#t%3AArity"
>Arity</A
></TD
></TR
><TR
><TD CLASS="doc"
><P
>An <TT
><A HREF="IdInfo.html#t%3AArityInfo"
>ArityInfo</A
></TT
> of <TT
>n</TT
> tells us that partial application of this 
 <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> to up to <TT
>n-1</TT
> value arguments does essentially no work.
</P
><P
>That is not necessarily the same as saying that it has <TT
>n</TT
> leading 
 lambdas, because coerces may get in the way.
</P
><P
>The arity might increase later in the compilation process, if
 an extra lambda floats up to the binding site.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:unknownArity"
><A NAME="v%3AunknownArity"
></A
></A
><B
>unknownArity</B
> :: <A HREF="BasicTypes.html#t%3AArity"
>Arity</A
></TD
></TR
><TR
><TD CLASS="doc"
>It is always safe to assume that an <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> has an arity of 0
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:arityInfo"
><A NAME="v%3AarityInfo"
></A
></A
><B
>arityInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AArityInfo"
>ArityInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> arity
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setArityInfo"
><A NAME="v%3AsetArityInfo"
></A
></A
><B
>setArityInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AArityInfo"
>ArityInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ppArityInfo"
><A NAME="v%3AppArityInfo"
></A
></A
><B
>ppArityInfo</B
> :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</A
> -&gt; <A HREF="Outputable.html#t%3ASDoc"
>SDoc</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="5"
><A NAME="5"
>Demand and strictness Info
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:newStrictnessInfo"
><A NAME="v%3AnewStrictnessInfo"
></A
></A
><B
>newStrictnessInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3AStrictSig"
>StrictSig</A
></TD
></TR
><TR
><TD CLASS="doc"
>Id strictness information. Reason for Maybe: 
 the DmdAnal phase needs to know whether
 this is the first visit, so it can assign botSig.
 Other customers want topSig.  So <TT
>Nothing</TT
> is good.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setNewStrictnessInfo"
><A NAME="v%3AsetNewStrictnessInfo"
></A
></A
><B
>setNewStrictnessInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3AStrictSig"
>StrictSig</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:newDemandInfo"
><A NAME="v%3AnewDemandInfo"
></A
></A
><B
>newDemandInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3ADemand"
>Demand</A
></TD
></TR
><TR
><TD CLASS="doc"
>Id demand information. Similarly we want to know 
 if there's no known demand yet, for when we are looking
 for CPR info
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setNewDemandInfo"
><A NAME="v%3AsetNewDemandInfo"
></A
></A
><B
>setNewDemandInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3ADemand"
>Demand</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:pprNewStrictness"
><A NAME="v%3ApprNewStrictness"
></A
></A
><B
>pprNewStrictness</B
> :: <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3AStrictSig"
>StrictSig</A
> -&gt; <A HREF="Outputable.html#t%3ASDoc"
>SDoc</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setAllStrictnessInfo"
><A NAME="v%3AsetAllStrictnessInfo"
></A
></A
><B
>setAllStrictnessInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="NewDemand.html#t%3AStrictSig"
>StrictSig</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>Set old and new strictness information together
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="6"
><A NAME="6"
>The WorkerInfo type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:WorkerInfo"
><A NAME="t%3AWorkerInfo"
></A
></A
><B
>WorkerInfo</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>If this Id has a worker then we store a reference to it. Worker
 functions are generated by the worker/wrapper pass, using information
 information from strictness analysis.
</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:NoWorker"
><A NAME="v%3ANoWorker"
></A
></A
><B
>NoWorker</B
></TD
><TD CLASS="rdoc"
>No known worker function
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:HasWorker"
><A NAME="v%3AHasWorker"
></A
></A
><B
>HasWorker</B
> <A HREF="Var.html#t%3AId"
>Id</A
> <A HREF="BasicTypes.html#t%3AArity"
>Arity</A
></TD
><TD CLASS="rdoc"
>The <TT
><A HREF="BasicTypes.html#t%3AArity"
>Arity</A
></TT
> is the arity of the <EM
>wrapper</EM
> at the moment of the
 worker/wrapper split, which may be different from the current <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> Aritiy
</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:workerExists"
><A NAME="v%3AworkerExists"
></A
></A
><B
>workerExists</B
> :: <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:wrapperArity"
><A NAME="v%3AwrapperArity"
></A
></A
><B
>wrapperArity</B
> :: <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
> -&gt; <A HREF="BasicTypes.html#t%3AArity"
>Arity</A
></TD
></TR
><TR
><TD CLASS="doc"
>The <TT
><A HREF="BasicTypes.html#t%3AArity"
>Arity</A
></TT
> of the worker function at the time of the split if it exists, or a panic otherwise
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:workerId"
><A NAME="v%3AworkerId"
></A
></A
><B
>workerId</B
> :: <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
> -&gt; <A HREF="Var.html#t%3AId"
>Id</A
></TD
></TR
><TR
><TD CLASS="doc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> of the worker function if it exists, or a panic otherwise
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:workerInfo"
><A NAME="v%3AworkerInfo"
></A
></A
><B
>workerInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>Pointer to worker function.
 Within one module this is irrelevant; the 
 inlining of a worker is handled via the <TT
><A HREF="CoreSyn.html#t%3AUnfolding"
>Unfolding</A
></TT
>.
 However, when the module is imported by others, the
 <TT
><A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
></TT
> is used <EM
>only</EM
> to indicate the form of
 the RHS, so that interface files don't actually 
 need to contain the RHS; it can be derived from
 the strictness info
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setWorkerInfo"
><A NAME="v%3AsetWorkerInfo"
></A
></A
><B
>setWorkerInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ppWorkerInfo"
><A NAME="v%3AppWorkerInfo"
></A
></A
><B
>ppWorkerInfo</B
> :: <A HREF="IdInfo.html#t%3AWorkerInfo"
>WorkerInfo</A
> -&gt; <A HREF="Outputable.html#t%3ASDoc"
>SDoc</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="7"
><A NAME="7"
>Unfolding Info
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:unfoldingInfo"
><A NAME="v%3AunfoldingInfo"
></A
></A
><B
>unfoldingInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="CoreSyn.html#t%3AUnfolding"
>Unfolding</A
></TD
></TR
><TR
><TD CLASS="doc"
>The <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>s unfolding
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setUnfoldingInfo"
><A NAME="v%3AsetUnfoldingInfo"
></A
></A
><B
>setUnfoldingInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="CoreSyn.html#t%3AUnfolding"
>Unfolding</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setUnfoldingInfoLazily"
><A NAME="v%3AsetUnfoldingInfoLazily"
></A
></A
><B
>setUnfoldingInfoLazily</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="CoreSyn.html#t%3AUnfolding"
>Unfolding</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="8"
><A NAME="8"
>The InlinePragInfo type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:InlinePragInfo"
><A NAME="t%3AInlinePragInfo"
></A
></A
><B
>InlinePragInfo</B
> = <A HREF="BasicTypes.html#t%3AActivation"
>Activation</A
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Tells when the inlining is active.
 When it is active the thing may be inlined, depending on how
 big it is.
</P
><P
>If there was an <TT
>INLINE</TT
> pragma, then as a separate matter, the
 RHS will have been made to look small with a Core inline Note
</P
><P
>The default <TT
><A HREF="IdInfo.html#t%3AInlinePragInfo"
>InlinePragInfo</A
></TT
> is <TT
><A HREF="BasicTypes.html#v%3AAlwaysActive"
>AlwaysActive</A
></TT
>, so the info serves
 entirely as a way to inhibit inlining until we want it
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:inlinePragInfo"
><A NAME="v%3AinlinePragInfo"
></A
></A
><B
>inlinePragInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AInlinePragInfo"
>InlinePragInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>Any inline pragma atached to the <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setInlinePragInfo"
><A NAME="v%3AsetInlinePragInfo"
></A
></A
><B
>setInlinePragInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AInlinePragInfo"
>InlinePragInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="9"
><A NAME="9"
>The OccInfo type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:OccInfo"
><A NAME="t%3AOccInfo"
></A
></A
><B
>OccInfo</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>Identifier occurrence information
</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:NoOccInfo"
><A NAME="v%3ANoOccInfo"
></A
></A
><B
>NoOccInfo</B
></TD
><TD CLASS="rdoc"
>There are many occurrences, or unknown occurences
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:IAmDead"
><A NAME="v%3AIAmDead"
></A
></A
><B
>IAmDead</B
></TD
><TD CLASS="rdoc"
>Marks unused variables.  Sometimes useful for
 lambda and case-bound variables.
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:OneOcc"
><A NAME="v%3AOneOcc"
></A
></A
><B
>OneOcc</B
> !<A HREF="IdInfo.html#t%3AInsideLam"
>InsideLam</A
> !<A HREF="IdInfo.html#t%3AOneBranch"
>OneBranch</A
> !<A HREF="BasicTypes.html#t%3AInterestingCxt"
>InterestingCxt</A
></TD
><TD CLASS="rdoc"
>Occurs exactly once, not inside a rule
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:IAmALoopBreaker"
><A NAME="v%3AIAmALoopBreaker"
></A
></A
><B
>IAmALoopBreaker</B
> !RulesOnly</TD
><TD CLASS="rdoc"
>This identifier breaks a loop of mutually recursive functions. The field
 marks whether it is only a loop breaker due to a reference in a rule
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:OccInfo')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:OccInfo" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Outputable.html#t%3AOutputable"
>Outputable</A
> <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:isFragileOcc"
><A NAME="v%3AisFragileOcc"
></A
></A
><B
>isFragileOcc</B
> :: <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:isDeadOcc"
><A NAME="v%3AisDeadOcc"
></A
></A
><B
>isDeadOcc</B
> :: <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:isLoopBreaker"
><A NAME="v%3AisLoopBreaker"
></A
></A
><B
>isLoopBreaker</B
> :: <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:occInfo"
><A NAME="v%3AoccInfo"
></A
></A
><B
>occInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>How the <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> occurs in the program
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setOccInfo"
><A NAME="v%3AsetOccInfo"
></A
></A
><B
>setOccInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AOccInfo"
>OccInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:InsideLam"
><A NAME="t%3AInsideLam"
></A
></A
><B
>InsideLam</B
> = <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:OneBranch"
><A NAME="t%3AOneBranch"
></A
></A
><B
>OneBranch</B
> = <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:insideLam"
><A NAME="v%3AinsideLam"
></A
></A
><B
>insideLam</B
> :: <A HREF="IdInfo.html#t%3AInsideLam"
>InsideLam</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:notInsideLam"
><A NAME="v%3AnotInsideLam"
></A
></A
><B
>notInsideLam</B
> :: <A HREF="IdInfo.html#t%3AInsideLam"
>InsideLam</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:oneBranch"
><A NAME="v%3AoneBranch"
></A
></A
><B
>oneBranch</B
> :: <A HREF="IdInfo.html#t%3AOneBranch"
>OneBranch</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:notOneBranch"
><A NAME="v%3AnotOneBranch"
></A
></A
><B
>notOneBranch</B
> :: <A HREF="IdInfo.html#t%3AOneBranch"
>OneBranch</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="10"
><A NAME="10"
>The SpecInfo type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:SpecInfo"
><A NAME="t%3ASpecInfo"
></A
></A
><B
>SpecInfo</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>Records the specializations of this <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> that we know about
 in the form of rewrite <TT
><A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
></TT
>s that target them
</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:SpecInfo"
><A NAME="v%3ASpecInfo"
></A
></A
><B
>SpecInfo</B
> [<A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
>] <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:isEmptySpecInfo"
><A NAME="v%3AisEmptySpecInfo"
></A
></A
><B
>isEmptySpecInfo</B
> :: <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:specInfoFreeVars"
><A NAME="v%3AspecInfoFreeVars"
></A
></A
><B
>specInfoFreeVars</B
> :: <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Retrieve the locally-defined free variables of both the left and
 right hand sides of the specialization rules
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:specInfoRules"
><A NAME="v%3AspecInfoRules"
></A
></A
><B
>specInfoRules</B
> :: <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; [<A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
>]</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:seqSpecInfo"
><A NAME="v%3AseqSpecInfo"
></A
></A
><B
>seqSpecInfo</B
> :: <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29"
>()</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setSpecInfoHead"
><A NAME="v%3AsetSpecInfoHead"
></A
></A
><B
>setSpecInfoHead</B
> :: <A HREF="Name.html#t%3AName"
>Name</A
> -&gt; <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>Change the name of the function the rule is keyed on on all of the <TT
><A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
></TT
>s
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:specInfo"
><A NAME="v%3AspecInfo"
></A
></A
><B
>specInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>Specialisations of the <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
>s function which exist
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setSpecInfo"
><A NAME="v%3AsetSpecInfo"
></A
></A
><B
>setSpecInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ASpecInfo"
>SpecInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="11"
><A NAME="11"
>The CAFInfo type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:CafInfo"
><A NAME="t%3ACafInfo"
></A
></A
><B
>CafInfo</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>Records whether an <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> makes Constant Applicative Form references
</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:MayHaveCafRefs"
><A NAME="v%3AMayHaveCafRefs"
></A
></A
><B
>MayHaveCafRefs</B
></TD
><TD CLASS="rdoc"
><P
>Indicates that the <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> is for either:
</P
><P
>1. A function or static constructor
    that refers to one or more CAFs, or
</P
><P
>2. A real live CAF
</P
></TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:NoCafRefs"
><A NAME="v%3ANoCafRefs"
></A
></A
><B
>NoCafRefs</B
></TD
><TD CLASS="rdoc"
>A function or static constructor
 that refers to no CAFs.
</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ppCafInfo"
><A NAME="v%3AppCafInfo"
></A
></A
><B
>ppCafInfo</B
> :: <A HREF="IdInfo.html#t%3ACafInfo"
>CafInfo</A
> -&gt; <A HREF="Outputable.html#t%3ASDoc"
>SDoc</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mayHaveCafRefs"
><A NAME="v%3AmayHaveCafRefs"
></A
></A
><B
>mayHaveCafRefs</B
> :: <A HREF="IdInfo.html#t%3ACafInfo"
>CafInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:cafInfo"
><A NAME="v%3AcafInfo"
></A
></A
><B
>cafInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ACafInfo"
>CafInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> CAF info
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setCafInfo"
><A NAME="v%3AsetCafInfo"
></A
></A
><B
>setCafInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ACafInfo"
>CafInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="12"
><A NAME="12"
>The LBVarInfo type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:LBVarInfo"
><A NAME="t%3ALBVarInfo"
></A
></A
><B
>LBVarInfo</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><P
>If the <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> is a lambda-bound variable then it may have lambda-bound
 variable info. Sometimes we know whether the lambda binding this variable
 is a &quot;one-shot&quot; lambda; that is, whether it is applied at most once.
</P
><P
>This information may be useful in optimisation, as computations may
 safely be floated inside such a lambda without risk of duplicating
 work.
</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:NoLBVarInfo"
><A NAME="v%3ANoLBVarInfo"
></A
></A
><B
>NoLBVarInfo</B
></TD
><TD CLASS="rdoc"
>No information
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:IsOneShotLambda"
><A NAME="v%3AIsOneShotLambda"
></A
></A
><B
>IsOneShotLambda</B
></TD
><TD CLASS="rdoc"
>The lambda is applied at most once).
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:LBVarInfo')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:LBVarInfo" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="../base/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="IdInfo.html#t%3ALBVarInfo"
>LBVarInfo</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="Outputable.html#t%3AOutputable"
>Outputable</A
> <A HREF="IdInfo.html#t%3ALBVarInfo"
>LBVarInfo</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:noLBVarInfo"
><A NAME="v%3AnoLBVarInfo"
></A
></A
><B
>noLBVarInfo</B
> :: <A HREF="IdInfo.html#t%3ALBVarInfo"
>LBVarInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>It is always safe to assume that an <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> has no lambda-bound variable information
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:hasNoLBVarInfo"
><A NAME="v%3AhasNoLBVarInfo"
></A
></A
><B
>hasNoLBVarInfo</B
> :: <A HREF="IdInfo.html#t%3ALBVarInfo"
>LBVarInfo</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:lbvarInfo"
><A NAME="v%3AlbvarInfo"
></A
></A
><B
>lbvarInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ALBVarInfo"
>LBVarInfo</A
></TD
></TR
><TR
><TD CLASS="doc"
>Info about a lambda-bound variable, if the <TT
><A HREF="Var.html#t%3AId"
>Id</A
></TT
> is one
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:setLBVarInfo"
><A NAME="v%3AsetLBVarInfo"
></A
></A
><B
>setLBVarInfo</B
> :: <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
> -&gt; <A HREF="IdInfo.html#t%3ALBVarInfo"
>LBVarInfo</A
> -&gt; <A HREF="IdInfo.html#t%3AIdInfo"
>IdInfo</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="13"
><A NAME="13"
>Tick-box Info
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:TickBoxOp"
><A NAME="t%3ATickBoxOp"
></A
></A
><B
>TickBoxOp</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>Tick box for Hpc-style coverage
</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:TickBox"
><A NAME="v%3ATickBox"
></A
></A
><B
>TickBox</B
> <A HREF="Module.html#t%3AModule"
>Module</A
> !<A HREF="IdInfo.html#t%3ATickBoxId"
>TickBoxId</A
></TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:TickBoxOp')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:TickBoxOp" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Outputable.html#t%3AOutputable"
>Outputable</A
> <A HREF="IdInfo.html#t%3ATickBoxOp"
>TickBoxOp</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:TickBoxId"
><A NAME="t%3ATickBoxId"
></A
></A
><B
>TickBoxId</B
> = <A HREF="../ghc-prim/GHC-Types.html#t%3AInt"
>Int</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.4.2</TD
></TR
></TABLE
></BODY
></HTML
>