Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 2911

ghc-7.4.2-4.mga5.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Id</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Id.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Id</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">The main types
</a><ul><li><a href="#g:2">Simple construction
</a></li><li><a href="#g:3">Taking an Id apart
</a></li><li><a href="#g:4">Modifying an Id
</a></li><li><a href="#g:5">Predicates on Ids
</a></li><li><a href="#g:6">Evidence variables
</a></li><li><a href="#g:7">Inline pragma stuff
</a></li><li><a href="#g:8">One-shot lambdas
</a></li><li><a href="#g:9">Reading <code><a href="IdInfo.html#t:IdInfo">IdInfo</a></code> fields
</a></li><li><a href="#g:10">Writing <code><a href="IdInfo.html#t:IdInfo">IdInfo</a></code> fields
</a></li></ul></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p><a name="name_types"></a>
 GHC uses several kinds of name internally:
</p><ul><li> <code><a href="OccName.html#t:OccName">OccName</a></code>: see <a href="OccName.html#name_types">OccName</a>
</li><li> <code><a href="RdrName.html#t:RdrName">RdrName</a></code>: see <a href="RdrName.html#name_types">RdrName</a>
</li><li> <code><a href="Name.html#t:Name">Name</a></code>: see <a href="Name.html#name_types">Name</a>
</li><li> <code><a href="Id.html#t:Id">Id</a></code> represents names that not only have a <code><a href="Name.html#t:Name">Name</a></code> but also a <code><a href="TypeRep.html#t:Type">Type</a></code> and some additional
   details (a <code><a href="IdInfo.html#t:IdInfo">IdInfo</a></code> and one of <code><a href="Var.html#t:LocalIdDetails">LocalIdDetails</a></code> or <code><a href="IdInfo.html#t:GlobalIdDetails">GlobalIdDetails</a></code>) that
   are added, modified and inspected by various compiler passes. These <code><a href="Id.html#t:Var">Var</a></code> names may either 
   be global or local, see <a href="Var.html#globalvslocal">Var</a>
</li><li> <code><a href="Id.html#t:Var">Var</a></code>: see <a href="Var.html#name_types">Var</a>
</li></ul></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span>  <a href="#t:Var">Var</a> </li><li class="src short"><span class="keyword">type</span> <a href="#t:Id">Id</a> = <a href="Id.html#t:Var">Var</a></li><li class="src short"><a href="#v:isId">isId</a> :: <a href="Id.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:mkGlobalId">mkGlobalId</a> :: <a href="IdInfo.html#t:IdDetails">IdDetails</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkVanillaGlobal">mkVanillaGlobal</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkVanillaGlobalWithInfo">mkVanillaGlobalWithInfo</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkLocalId">mkLocalId</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkLocalIdWithInfo">mkLocalIdWithInfo</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkExportedLocalId">mkExportedLocalId</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkSysLocal">mkSysLocal</a> :: <a href="FastString.html#t:FastString">FastString</a> -&gt; <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkSysLocalM">mkSysLocalM</a> :: <a href="UniqSupply.html#t:MonadUnique">MonadUnique</a> m =&gt; <a href="FastString.html#t:FastString">FastString</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; m <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkUserLocal">mkUserLocal</a> :: <a href="OccName.html#t:OccName">OccName</a> -&gt; <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="SrcLoc.html#t:SrcSpan">SrcSpan</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkUserLocalM">mkUserLocalM</a> :: <a href="UniqSupply.html#t:MonadUnique">MonadUnique</a> m =&gt; <a href="OccName.html#t:OccName">OccName</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="SrcLoc.html#t:SrcSpan">SrcSpan</a> -&gt; m <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkTemplateLocals">mkTemplateLocals</a> :: [<a href="Type.html#t:Type">Type</a>] -&gt; [<a href="Id.html#t:Id">Id</a>]</li><li class="src short"><a href="#v:mkTemplateLocalsNum">mkTemplateLocalsNum</a> :: <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; [<a href="Type.html#t:Type">Type</a>] -&gt; [<a href="Id.html#t:Id">Id</a>]</li><li class="src short"><a href="#v:mkTemplateLocal">mkTemplateLocal</a> :: <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkWorkerId">mkWorkerId</a> :: <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkWiredInIdName">mkWiredInIdName</a> :: <a href="Module.html#t:Module">Module</a> -&gt; <a href="FastString.html#t:FastString">FastString</a> -&gt; <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="Name.html#t:Name">Name</a></li><li class="src short"><a href="#v:idName">idName</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Name.html#t:Name">Name</a></li><li class="src short"><a href="#v:idType">idType</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:idUnique">idUnique</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Unique.html#t:Unique">Unique</a></li><li class="src short"><a href="#v:idInfo">idInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a></li><li class="src short"><a href="#v:idDetails">idDetails</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:IdDetails">IdDetails</a></li><li class="src short"><a href="#v:idPrimRep">idPrimRep</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="TyCon.html#t:PrimRep">PrimRep</a></li><li class="src short"><a href="#v:recordSelectorFieldLabel">recordSelectorFieldLabel</a> :: <a href="Id.html#t:Id">Id</a> -&gt; (<a href="TyCon.html#t:TyCon">TyCon</a>, <a href="TyCon.html#t:FieldLabel">FieldLabel</a>)</li><li class="src short"><a href="#v:setIdName">setIdName</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdUnique">setIdUnique</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdType">setIdType</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdExported">setIdExported</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdNotExported">setIdNotExported</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:globaliseId">globaliseId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:localiseId">localiseId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdInfo">setIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:lazySetIdInfo">lazySetIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:modifyIdInfo">modifyIdInfo</a> :: (<a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a>) -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:maybeModifyIdInfo">maybeModifyIdInfo</a> :: <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:zapLamIdInfo">zapLamIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:zapDemandIdInfo">zapDemandIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:zapFragileIdInfo">zapFragileIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:transferPolyIdInfo">transferPolyIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; [<a href="Id.html#t:Var">Var</a>] -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:isImplicitId">isImplicitId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isDeadBinder">isDeadBinder</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isStrictId">isStrictId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isExportedId">isExportedId</a> :: <a href="Id.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isLocalId">isLocalId</a> :: <a href="Id.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isGlobalId">isGlobalId</a> :: <a href="Id.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isRecordSelector">isRecordSelector</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isNaughtyRecordSelector">isNaughtyRecordSelector</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isClassOpId_maybe">isClassOpId_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Class.html#t:Class">Class</a></li><li class="src short"><a href="#v:isDFunId">isDFunId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isPrimOpId">isPrimOpId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isPrimOpId_maybe">isPrimOpId_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="PrimOp.html#t:PrimOp">PrimOp</a></li><li class="src short"><a href="#v:isFCallId">isFCallId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isFCallId_maybe">isFCallId_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="ForeignCall.html#t:ForeignCall">ForeignCall</a></li><li class="src short"><a href="#v:isDataConWorkId">isDataConWorkId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isDataConWorkId_maybe">isDataConWorkId_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="DataCon.html#t:DataCon">DataCon</a></li><li class="src short"><a href="#v:isDataConId_maybe">isDataConId_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="DataCon.html#t:DataCon">DataCon</a></li><li class="src short"><a href="#v:idDataCon">idDataCon</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="DataCon.html#t:DataCon">DataCon</a></li><li class="src short"><a href="#v:isConLikeId">isConLikeId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isBottomingId">isBottomingId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:idIsFrom">idIsFrom</a> :: <a href="Module.html#t:Module">Module</a> -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:hasNoBinding">hasNoBinding</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:DictId">DictId</a> = <a href="Var.html#t:EvId">EvId</a></li><li class="src short"><a href="#v:isDictId">isDictId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isEvVar">isEvVar</a> :: <a href="Id.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:idInlinePragma">idInlinePragma</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:InlinePragma">InlinePragma</a></li><li class="src short"><a href="#v:setInlinePragma">setInlinePragma</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:InlinePragma">InlinePragma</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:modifyInlinePragma">modifyInlinePragma</a> :: <a href="Id.html#t:Id">Id</a> -&gt; (<a href="BasicTypes.html#t:InlinePragma">InlinePragma</a> -&gt; <a href="BasicTypes.html#t:InlinePragma">InlinePragma</a>) -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:idInlineActivation">idInlineActivation</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:Activation">Activation</a></li><li class="src short"><a href="#v:setInlineActivation">setInlineActivation</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:Activation">Activation</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:idRuleMatchInfo">idRuleMatchInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:RuleMatchInfo">RuleMatchInfo</a></li><li class="src short"><a href="#v:isOneShotBndr">isOneShotBndr</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isOneShotLambda">isOneShotLambda</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isStateHackType">isStateHackType</a> :: <a href="Type.html#t:Type">Type</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:setOneShotLambda">setOneShotLambda</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:clearOneShotLambda">clearOneShotLambda</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:idArity">idArity</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:Arity">Arity</a></li><li class="src short"><a href="#v:idDemandInfo">idDemandInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Demand.html#t:Demand">Demand</a></li><li class="src short"><a href="#v:idDemandInfo_maybe">idDemandInfo_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Demand.html#t:Demand">Demand</a></li><li class="src short"><a href="#v:idStrictness">idStrictness</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Demand.html#t:StrictSig">StrictSig</a></li><li class="src short"><a href="#v:idStrictness_maybe">idStrictness_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Demand.html#t:StrictSig">StrictSig</a></li><li class="src short"><a href="#v:idUnfolding">idUnfolding</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="CoreSyn.html#t:Unfolding">Unfolding</a></li><li class="src short"><a href="#v:realIdUnfolding">realIdUnfolding</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="CoreSyn.html#t:Unfolding">Unfolding</a></li><li class="src short"><a href="#v:idSpecialisation">idSpecialisation</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:SpecInfo">SpecInfo</a></li><li class="src short"><a href="#v:idCoreRules">idCoreRules</a> :: <a href="Id.html#t:Id">Id</a> -&gt; [<a href="CoreSyn.html#t:CoreRule">CoreRule</a>]</li><li class="src short"><a href="#v:idHasRules">idHasRules</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:idCafInfo">idCafInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:CafInfo">CafInfo</a></li><li class="src short"><a href="#v:idLBVarInfo">idLBVarInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:LBVarInfo">LBVarInfo</a></li><li class="src short"><a href="#v:idOccInfo">idOccInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:OccInfo">OccInfo</a></li><li class="src short"><a href="#v:setIdUnfoldingLazily">setIdUnfoldingLazily</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="CoreSyn.html#t:Unfolding">Unfolding</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdUnfolding">setIdUnfolding</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="CoreSyn.html#t:Unfolding">Unfolding</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdArity">setIdArity</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:Arity">Arity</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdDemandInfo">setIdDemandInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Demand.html#t:Demand">Demand</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdStrictness">setIdStrictness</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Demand.html#t:StrictSig">StrictSig</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:zapIdStrictness">zapIdStrictness</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdSpecialisation">setIdSpecialisation</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:SpecInfo">SpecInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdCafInfo">setIdCafInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:CafInfo">CafInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdOccInfo">setIdOccInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:OccInfo">OccInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></li><li class="src short"><a href="#v:zapIdOccInfo">zapIdOccInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></li></ul></div><div id="interface"><h1 id="g:1">The main types
</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Var" class="def">Var</a>  </p><div class="doc"><p>Essentially a typed <code><a href="Name.html#t:Name">Name</a></code>, that may also contain some additional information
 about the <code><a href="Id.html#t:Var">Var</a></code> and it's use sites.
</p></div><div class="subs instances"><p id="control.i:Var" class="caption collapser" onclick="toggleSection('i:Var')">Instances</p><div id="section.i:Var" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Id.html#t:Var">Var</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Data.html#t:Data">Data</a> <a href="Id.html#t:Var">Var</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Id.html#t:Var">Var</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Id.html#t:Var">Var</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Id.html#t:Var">Var</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Outputable.html#t:OutputableBndr">OutputableBndr</a> <a href="Id.html#t:Var">Var</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Outputable.html#t:Outputable">Outputable</a> <a href="Id.html#t:Var">Var</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Unique.html#t:Uniquable">Uniquable</a> <a href="Id.html#t:Var">Var</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Name.html#t:NamedThing">NamedThing</a> <a href="Id.html#t:Var">Var</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Id" class="def">Id</a> = <a href="Id.html#t:Var">Var</a></p></div><div class="top"><p class="src"><a name="v:isId" class="def">isId</a> :: <a href="Id.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><h2 id="g:2">Simple construction
</h2><div class="top"><p class="src"><a name="v:mkGlobalId" class="def">mkGlobalId</a> :: <a href="IdInfo.html#t:IdDetails">IdDetails</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>For an explanation of global vs. local <code><a href="Id.html#t:Id">Id</a></code>s, see <a href="Var.html#globalvslocal">Var</a>
</p></div></div><div class="top"><p class="src"><a name="v:mkVanillaGlobal" class="def">mkVanillaGlobal</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>Make a global <code><a href="Id.html#t:Id">Id</a></code> without any extra information at all
</p></div></div><div class="top"><p class="src"><a name="v:mkVanillaGlobalWithInfo" class="def">mkVanillaGlobalWithInfo</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>Make a global <code><a href="Id.html#t:Id">Id</a></code> with no global information but some generic <code><a href="IdInfo.html#t:IdInfo">IdInfo</a></code>
</p></div></div><div class="top"><p class="src"><a name="v:mkLocalId" class="def">mkLocalId</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>For an explanation of global vs. local <code><a href="Id.html#t:Id">Id</a></code>s, see <a href="Var.html#globalvslocal">Var</a>
</p></div></div><div class="top"><p class="src"><a name="v:mkLocalIdWithInfo" class="def">mkLocalIdWithInfo</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:mkExportedLocalId" class="def">mkExportedLocalId</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>Create a local <code><a href="Id.html#t:Id">Id</a></code> that is marked as exported. 
 This prevents things attached to it from being removed as dead code.
</p></div></div><div class="top"><p class="src"><a name="v:mkSysLocal" class="def">mkSysLocal</a> :: <a href="FastString.html#t:FastString">FastString</a> -&gt; <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>Create a system local <code><a href="Id.html#t:Id">Id</a></code>. These are local <code><a href="Id.html#t:Id">Id</a></code>s (see <a href="Var.html#globalvslocal">Var</a>) 
 that are created by the compiler out of thin air
</p></div></div><div class="top"><p class="src"><a name="v:mkSysLocalM" class="def">mkSysLocalM</a> :: <a href="UniqSupply.html#t:MonadUnique">MonadUnique</a> m =&gt; <a href="FastString.html#t:FastString">FastString</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; m <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:mkUserLocal" class="def">mkUserLocal</a> :: <a href="OccName.html#t:OccName">OccName</a> -&gt; <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="SrcLoc.html#t:SrcSpan">SrcSpan</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>Create a user local <code><a href="Id.html#t:Id">Id</a></code>. These are local <code><a href="Id.html#t:Id">Id</a></code>s (see <a href="Var.html#globalvslocal">Var</a>) with a name and location that the user might recognize
</p></div></div><div class="top"><p class="src"><a name="v:mkUserLocalM" class="def">mkUserLocalM</a> :: <a href="UniqSupply.html#t:MonadUnique">MonadUnique</a> m =&gt; <a href="OccName.html#t:OccName">OccName</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="SrcLoc.html#t:SrcSpan">SrcSpan</a> -&gt; m <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:mkTemplateLocals" class="def">mkTemplateLocals</a> :: [<a href="Type.html#t:Type">Type</a>] -&gt; [<a href="Id.html#t:Id">Id</a>]</p><div class="doc"><p>Create a template local for a series of types
</p></div></div><div class="top"><p class="src"><a name="v:mkTemplateLocalsNum" class="def">mkTemplateLocalsNum</a> :: <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; [<a href="Type.html#t:Type">Type</a>] -&gt; [<a href="Id.html#t:Id">Id</a>]</p><div class="doc"><p>Create a template local for a series of type, but start from a specified template local
</p></div></div><div class="top"><p class="src"><a name="v:mkTemplateLocal" class="def">mkTemplateLocal</a> :: <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>Create a <em>template local</em>: a family of system local <code><a href="Id.html#t:Id">Id</a></code>s in bijection with <code>Int</code>s, typically used in unfoldings
</p></div></div><div class="top"><p class="src"><a name="v:mkWorkerId" class="def">mkWorkerId</a> :: <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>Workers get local names. <a href="CoreTidy.html">CoreTidy</a> will externalise these if necessary
</p></div></div><div class="top"><p class="src"><a name="v:mkWiredInIdName" class="def">mkWiredInIdName</a> :: <a href="Module.html#t:Module">Module</a> -&gt; <a href="FastString.html#t:FastString">FastString</a> -&gt; <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="Name.html#t:Name">Name</a></p></div><h2 id="g:3">Taking an Id apart
</h2><div class="top"><p class="src"><a name="v:idName" class="def">idName</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Name.html#t:Name">Name</a></p></div><div class="top"><p class="src"><a name="v:idType" class="def">idType</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Kind.html#t:Kind">Kind</a></p></div><div class="top"><p class="src"><a name="v:idUnique" class="def">idUnique</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Unique.html#t:Unique">Unique</a></p></div><div class="top"><p class="src"><a name="v:idInfo" class="def">idInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a></p></div><div class="top"><p class="src"><a name="v:idDetails" class="def">idDetails</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:IdDetails">IdDetails</a></p></div><div class="top"><p class="src"><a name="v:idPrimRep" class="def">idPrimRep</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="TyCon.html#t:PrimRep">PrimRep</a></p></div><div class="top"><p class="src"><a name="v:recordSelectorFieldLabel" class="def">recordSelectorFieldLabel</a> :: <a href="Id.html#t:Id">Id</a> -&gt; (<a href="TyCon.html#t:TyCon">TyCon</a>, <a href="TyCon.html#t:FieldLabel">FieldLabel</a>)</p><div class="doc"><p>If the <code><a href="Id.html#t:Id">Id</a></code> is that for a record selector, extract the <code><a href="IdInfo.html#v:sel_tycon">sel_tycon</a></code> and label. Panic otherwise
</p></div></div><h2 id="g:4">Modifying an Id
</h2><div class="top"><p class="src"><a name="v:setIdName" class="def">setIdName</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdUnique" class="def">setIdUnique</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdType" class="def">setIdType</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Type.html#t:Type">Type</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>Not only does this set the <code><a href="Id.html#t:Id">Id</a></code> <code><a href="Type.html#t:Type">Type</a></code>, it also evaluates the type to try and
 reduce space usage
</p></div></div><div class="top"><p class="src"><a name="v:setIdExported" class="def">setIdExported</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdNotExported" class="def">setIdNotExported</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:globaliseId" class="def">globaliseId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p><div class="doc"><p>If it's a local, make it global
</p></div></div><div class="top"><p class="src"><a name="v:localiseId" class="def">localiseId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdInfo" class="def">setIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:lazySetIdInfo" class="def">lazySetIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:modifyIdInfo" class="def">modifyIdInfo</a> :: (<a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="IdInfo.html#t:IdInfo">IdInfo</a>) -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:maybeModifyIdInfo" class="def">maybeModifyIdInfo</a> :: <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="IdInfo.html#t:IdInfo">IdInfo</a> -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:zapLamIdInfo" class="def">zapLamIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:zapDemandIdInfo" class="def">zapDemandIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:zapFragileIdInfo" class="def">zapFragileIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:transferPolyIdInfo" class="def">transferPolyIdInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; [<a href="Id.html#t:Var">Var</a>] -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><h2 id="g:5">Predicates on Ids
</h2><div class="top"><p class="src"><a name="v:isImplicitId" class="def">isImplicitId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p><code><a href="Id.html#v:isImplicitId">isImplicitId</a></code> tells whether an <code><a href="Id.html#t:Id">Id</a></code>s info is implied by other
 declarations, so we don't need to put its signature in an interface
 file, even if it's mentioned in some other interface unfolding.
</p></div></div><div class="top"><p class="src"><a name="v:isDeadBinder" class="def">isDeadBinder</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isStrictId" class="def">isStrictId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>This predicate says whether the <code><a href="Id.html#t:Id">Id</a></code> has a strict demand placed on it or
 has a type such that it can always be evaluated strictly (e.g., an
 unlifted type, but see the comment for <code><a href="Type.html#v:isStrictType">isStrictType</a></code>).  We need to
 check separately whether the <code><a href="Id.html#t:Id">Id</a></code> has a so-called &quot;strict type&quot; because if
 the demand for the given <code>id</code> hasn't been computed yet but <code>id</code> has a strict
 type, we still want <code>isStrictId id</code> to be <code>True</code>.
</p></div></div><div class="top"><p class="src"><a name="v:isExportedId" class="def">isExportedId</a> :: <a href="Id.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p><code>isExportedIdVar</code> means &quot;don't throw this away&quot;
</p></div></div><div class="top"><p class="src"><a name="v:isLocalId" class="def">isLocalId</a> :: <a href="Id.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isGlobalId" class="def">isGlobalId</a> :: <a href="Id.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isRecordSelector" class="def">isRecordSelector</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isNaughtyRecordSelector" class="def">isNaughtyRecordSelector</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isClassOpId_maybe" class="def">isClassOpId_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Class.html#t:Class">Class</a></p></div><div class="top"><p class="src"><a name="v:isDFunId" class="def">isDFunId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isPrimOpId" class="def">isPrimOpId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isPrimOpId_maybe" class="def">isPrimOpId_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="PrimOp.html#t:PrimOp">PrimOp</a></p></div><div class="top"><p class="src"><a name="v:isFCallId" class="def">isFCallId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isFCallId_maybe" class="def">isFCallId_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="ForeignCall.html#t:ForeignCall">ForeignCall</a></p></div><div class="top"><p class="src"><a name="v:isDataConWorkId" class="def">isDataConWorkId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isDataConWorkId_maybe" class="def">isDataConWorkId_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="DataCon.html#t:DataCon">DataCon</a></p></div><div class="top"><p class="src"><a name="v:isDataConId_maybe" class="def">isDataConId_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="DataCon.html#t:DataCon">DataCon</a></p></div><div class="top"><p class="src"><a name="v:idDataCon" class="def">idDataCon</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="DataCon.html#t:DataCon">DataCon</a></p><div class="doc"><p>Get from either the worker or the wrapper <code><a href="Id.html#t:Id">Id</a></code> to the <code><a href="DataCon.html#t:DataCon">DataCon</a></code>. Currently used only in the desugarer.
</p><p>INVARIANT: <code>idDataCon (dataConWrapId d) = d</code>: remember, <code><a href="DataCon.html#v:dataConWrapId">dataConWrapId</a></code> can return either the wrapper or the worker
</p></div></div><div class="top"><p class="src"><a name="v:isConLikeId" class="def">isConLikeId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isBottomingId" class="def">isBottomingId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>Returns true if an application to n args would diverge
</p></div></div><div class="top"><p class="src"><a name="v:idIsFrom" class="def">idIsFrom</a> :: <a href="Module.html#t:Module">Module</a> -&gt; <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:hasNoBinding" class="def">hasNoBinding</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>Returns <code>True</code> of an <code><a href="Id.html#t:Id">Id</a></code> which may not have a
 binding, even though it is defined in this module.
</p></div></div><h2 id="g:6">Evidence variables
</h2><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:DictId" class="def">DictId</a> = <a href="Var.html#t:EvId">EvId</a></p></div><div class="top"><p class="src"><a name="v:isDictId" class="def">isDictId</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isEvVar" class="def">isEvVar</a> :: <a href="Id.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><h2 id="g:7">Inline pragma stuff
</h2><div class="top"><p class="src"><a name="v:idInlinePragma" class="def">idInlinePragma</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:InlinePragma">InlinePragma</a></p></div><div class="top"><p class="src"><a name="v:setInlinePragma" class="def">setInlinePragma</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:InlinePragma">InlinePragma</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:modifyInlinePragma" class="def">modifyInlinePragma</a> :: <a href="Id.html#t:Id">Id</a> -&gt; (<a href="BasicTypes.html#t:InlinePragma">InlinePragma</a> -&gt; <a href="BasicTypes.html#t:InlinePragma">InlinePragma</a>) -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:idInlineActivation" class="def">idInlineActivation</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:Activation">Activation</a></p></div><div class="top"><p class="src"><a name="v:setInlineActivation" class="def">setInlineActivation</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:Activation">Activation</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:idRuleMatchInfo" class="def">idRuleMatchInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:RuleMatchInfo">RuleMatchInfo</a></p></div><h2 id="g:8">One-shot lambdas
</h2><div class="top"><p class="src"><a name="v:isOneShotBndr" class="def">isOneShotBndr</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>Returns whether the lambda associated with the <code><a href="Id.html#t:Id">Id</a></code> is certainly applied at most once
 OR we are applying the &quot;state hack&quot; which makes it appear as if theis is the case for
 lambdas used in <code>IO</code>. You should prefer using this over <code><a href="Id.html#v:isOneShotLambda">isOneShotLambda</a></code>
</p></div></div><div class="top"><p class="src"><a name="v:isOneShotLambda" class="def">isOneShotLambda</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>Returns whether the lambda associated with the <code><a href="Id.html#t:Id">Id</a></code> is certainly applied at most once.
 You probably want to use <code><a href="Id.html#v:isOneShotBndr">isOneShotBndr</a></code> instead
</p></div></div><div class="top"><p class="src"><a name="v:isStateHackType" class="def">isStateHackType</a> :: <a href="Type.html#t:Type">Type</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>Should we apply the state hack to values of this <code><a href="Type.html#t:Type">Type</a></code>?
</p></div></div><div class="top"><p class="src"><a name="v:setOneShotLambda" class="def">setOneShotLambda</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:clearOneShotLambda" class="def">clearOneShotLambda</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><h2 id="g:9">Reading <code><a href="IdInfo.html#t:IdInfo">IdInfo</a></code> fields
</h2><div class="top"><p class="src"><a name="v:idArity" class="def">idArity</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:Arity">Arity</a></p></div><div class="top"><p class="src"><a name="v:idDemandInfo" class="def">idDemandInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Demand.html#t:Demand">Demand</a></p></div><div class="top"><p class="src"><a name="v:idDemandInfo_maybe" class="def">idDemandInfo_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Demand.html#t:Demand">Demand</a></p></div><div class="top"><p class="src"><a name="v:idStrictness" class="def">idStrictness</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Demand.html#t:StrictSig">StrictSig</a></p></div><div class="top"><p class="src"><a name="v:idStrictness_maybe" class="def">idStrictness_maybe</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Demand.html#t:StrictSig">StrictSig</a></p></div><div class="top"><p class="src"><a name="v:idUnfolding" class="def">idUnfolding</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="CoreSyn.html#t:Unfolding">Unfolding</a></p></div><div class="top"><p class="src"><a name="v:realIdUnfolding" class="def">realIdUnfolding</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="CoreSyn.html#t:Unfolding">Unfolding</a></p></div><div class="top"><p class="src"><a name="v:idSpecialisation" class="def">idSpecialisation</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:SpecInfo">SpecInfo</a></p></div><div class="top"><p class="src"><a name="v:idCoreRules" class="def">idCoreRules</a> :: <a href="Id.html#t:Id">Id</a> -&gt; [<a href="CoreSyn.html#t:CoreRule">CoreRule</a>]</p></div><div class="top"><p class="src"><a name="v:idHasRules" class="def">idHasRules</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:idCafInfo" class="def">idCafInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:CafInfo">CafInfo</a></p></div><div class="top"><p class="src"><a name="v:idLBVarInfo" class="def">idLBVarInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:LBVarInfo">LBVarInfo</a></p></div><div class="top"><p class="src"><a name="v:idOccInfo" class="def">idOccInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:OccInfo">OccInfo</a></p></div><h2 id="g:10">Writing <code><a href="IdInfo.html#t:IdInfo">IdInfo</a></code> fields
</h2><div class="top"><p class="src"><a name="v:setIdUnfoldingLazily" class="def">setIdUnfoldingLazily</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="CoreSyn.html#t:Unfolding">Unfolding</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdUnfolding" class="def">setIdUnfolding</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="CoreSyn.html#t:Unfolding">Unfolding</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdArity" class="def">setIdArity</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:Arity">Arity</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdDemandInfo" class="def">setIdDemandInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Demand.html#t:Demand">Demand</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdStrictness" class="def">setIdStrictness</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Demand.html#t:StrictSig">StrictSig</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:zapIdStrictness" class="def">zapIdStrictness</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdSpecialisation" class="def">setIdSpecialisation</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:SpecInfo">SpecInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdCafInfo" class="def">setIdCafInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="IdInfo.html#t:CafInfo">CafInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:setIdOccInfo" class="def">setIdOccInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="BasicTypes.html#t:OccInfo">OccInfo</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:zapIdOccInfo" class="def">zapIdOccInfo</a> :: <a href="Id.html#t:Id">Id</a> -&gt; <a href="Id.html#t:Id">Id</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>