<!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.12.3: 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 IdDetails 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%3AIdDetails" >IdDetails</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AVanillaId" >VanillaId</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARecSelId" >RecSelId</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_naughty" >sel_naughty</A > :: <A HREF="../base-4.2.0.2/Data-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%3ADFunId" >DFunId</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprIdDetails" >pprIdDetails</A > :: <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</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 > -> <A HREF="../ghc-prim-0.2.0.0/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 > -> <A HREF="../ghc-prim-0.2.0.0/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 > -> <A HREF="../base-4.2.0.2/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 > -> <A HREF="../base-4.2.0.2/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 > -> <A HREF="../base-4.2.0.2/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 > -> <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 > -> <A HREF="IdInfo.html#t%3AArityInfo" >ArityInfo</A > -> <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="../base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A > -> <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 > -> <A HREF="../base-4.2.0.2/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 > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="NewDemand.html#t%3AStrictSig" >StrictSig</A > -> <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 > -> <A HREF="../base-4.2.0.2/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 > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="NewDemand.html#t%3ADemand" >Demand</A > -> <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-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="NewDemand.html#t%3AStrictSig" >StrictSig</A > -> <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 > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="NewDemand.html#t%3AStrictSig" >StrictSig</A > -> <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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <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 > -> <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 > -> <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 > -> <A HREF="IdInfo.html#t%3AWorkerInfo" >WorkerInfo</A > -> <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 > -> <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 > -> <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 > -> <A HREF="CoreSyn.html#t%3AUnfolding" >Unfolding</A > -> <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 > -> <A HREF="CoreSyn.html#t%3AUnfolding" >Unfolding</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%3AInlinePragInfo" >InlinePragInfo</A > = <A HREF="BasicTypes.html#t%3AInlinePragma" >InlinePragma</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 > -> <A HREF="BasicTypes.html#t%3AInlinePragma" >InlinePragma</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 > -> <A HREF="BasicTypes.html#t%3AInlinePragma" >InlinePragma</A > -> <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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <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 > -> <A HREF="IdInfo.html#t%3AOccInfo" >OccInfo</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%3AInsideLam" >InsideLam</A > = <A HREF="../base-4.2.0.2/Data-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="../base-4.2.0.2/Data-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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <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 > -> [<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 > -> <A HREF="../ghc-prim-0.2.0.0/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 > -> <A HREF="IdInfo.html#t%3ASpecInfo" >SpecInfo</A > -> <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 > -> <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 > -> <A HREF="IdInfo.html#t%3ASpecInfo" >SpecInfo</A > -> <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 > -> <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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <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 > -> <A HREF="IdInfo.html#t%3ACafInfo" >CafInfo</A > -> <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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <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 > -> <A HREF="IdInfo.html#t%3ALBVarInfo" >LBVarInfo</A > -> <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="../base-4.2.0.2/Data-Int.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 IdDetails type </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:IdDetails" ><A NAME="t%3AIdDetails" ></A ></A ><B >IdDetails</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >The <TT ><A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A ></TT > of an <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT > give stable, and necessary, information about the Id. </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:VanillaId" ><A NAME="v%3AVanillaId" ></A ></A ><B >VanillaId</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:RecSelId" ><A NAME="v%3ARecSelId" ></A ></A ><B >RecSelId</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_naughty" ><A NAME="v%3Asel_naughty" ></A ></A ><B >sel_naughty</B > :: <A HREF="../base-4.2.0.2/Data-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:DFunId" ><A NAME="v%3ADFunId" ></A ></A ><B >DFunId</B ></TD ><TD CLASS="rdoc" >A dictionary function. We don't use this in an essential way, currently, but it's kind of nice that we can keep track of which Ids are DFuns, across module boundaries too </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:IdDetails')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:IdDetails" 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%3AIdDetails" >IdDetails</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprIdDetails" ><A NAME="v%3ApprIdDetails" ></A ></A ><B >pprIdDetails</B > :: <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></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 > -> <A HREF="../ghc-prim-0.2.0.0/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 > -> <A HREF="../ghc-prim-0.2.0.0/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 > -> <A HREF="../base-4.2.0.2/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 > -> <A HREF="../base-4.2.0.2/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 > -> <A HREF="../base-4.2.0.2/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 > -> <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 > -> <A HREF="IdInfo.html#t%3AArityInfo" >ArityInfo</A > -> <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="../base-4.2.0.2/Data-Int.html#t%3AInt" >Int</A > -> <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 > -> <A HREF="../base-4.2.0.2/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 > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="NewDemand.html#t%3AStrictSig" >StrictSig</A > -> <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 > -> <A HREF="../base-4.2.0.2/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 > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="NewDemand.html#t%3ADemand" >Demand</A > -> <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-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="NewDemand.html#t%3AStrictSig" >StrictSig</A > -> <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 > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="NewDemand.html#t%3AStrictSig" >StrictSig</A > -> <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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <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 > -> <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 > -> <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 > -> <A HREF="IdInfo.html#t%3AWorkerInfo" >WorkerInfo</A > -> <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 > -> <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 > -> <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 > -> <A HREF="CoreSyn.html#t%3AUnfolding" >Unfolding</A > -> <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 > -> <A HREF="CoreSyn.html#t%3AUnfolding" >Unfolding</A > -> <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%3AInlinePragma" >InlinePragma</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 > -> <A HREF="BasicTypes.html#t%3AInlinePragma" >InlinePragma</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 > -> <A HREF="BasicTypes.html#t%3AInlinePragma" >InlinePragma</A > -> <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-4.2.0.2/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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <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 > -> <A HREF="IdInfo.html#t%3AOccInfo" >OccInfo</A > -> <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="../base-4.2.0.2/Data-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="../base-4.2.0.2/Data-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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <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 > -> [<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 > -> <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="decl" ><A NAME="v:setSpecInfoHead" ><A NAME="v%3AsetSpecInfoHead" ></A ></A ><B >setSpecInfoHead</B > :: <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="IdInfo.html#t%3ASpecInfo" >SpecInfo</A > -> <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 > -> <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 > -> <A HREF="IdInfo.html#t%3ASpecInfo" >SpecInfo</A > -> <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 ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:CafInfo')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:CafInfo" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > <A HREF="IdInfo.html#t%3ACafInfo" >CafInfo</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="IdInfo.html#t%3ACafInfo" >CafInfo</A ></TD ></TR ></TABLE ></DIV ></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 > -> <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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <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 > -> <A HREF="IdInfo.html#t%3ACafInfo" >CafInfo</A > -> <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 "one-shot" 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-4.2.0.2/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 > -> <A HREF="../base-4.2.0.2/Data-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 > -> <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 > -> <A HREF="IdInfo.html#t%3ALBVarInfo" >LBVarInfo</A > -> <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="../base-4.2.0.2/Data-Int.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.6.1</TD ></TR ></TABLE ></BODY ></HTML >