<!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 >RdrName</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_RdrName.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" >RdrName</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 main type </A ></DT ><DD ><DL ><DT ><A HREF="#2" >Construction </A ></DT ><DT ><A HREF="#3" >Destruction </A ></DT ><DT ><A HREF="#4" >Printing </A ></DT ></DL ></DD ><DT ><A HREF="#5" >Local mapping of <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > to <TT ><A HREF="Name.html#t%3AName" >Name</A ></TT > </A ></DT ><DT ><A HREF="#6" >Global mapping of <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > to <TT ><A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A ></TT >s </A ></DT ><DD ><DL ><DT ><A HREF="#7" >Global <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > mapping elements: <TT ><A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A ></TT >, <TT ><A HREF="RdrName.html#t%3AProvenance" >Provenance</A ></TT >, <TT ><A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A ></TT > </A ></DT ></DL ></DD ></DL ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" ><P ><A NAME="name_types" ><A NAME="name_types" ></A ></A > GHC uses several kinds of name internally: </P ><UL ><LI > OccName.OccName: see <A HREF="OccName.html#name_types" >OccName</A > </LI ><LI > <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > is the type of names that come directly from the parser. They have not yet had their scoping and binding resolved by the renamer and can be thought of to a first approximation as an OccName.OccName with an optional module qualifier </LI ><LI > <TT ><A HREF="Name.html#t%3AName" >Name</A ></TT >: see <A HREF="Name.html#name_types" >Name</A > </LI ><LI > Id.Id: see <A HREF="Id.html#name_types" >Id</A > </LI ><LI > Var.Var: see <A HREF="Var.html#name_types" >Var</A > </LI ></UL ></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%3ARdrName" >RdrName</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AUnqual" >Unqual</A > <A HREF="OccName.html#t%3AOccName" >OccName</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AQual" >Qual</A > <A HREF="Module.html#t%3AModuleName" >ModuleName</A > <A HREF="OccName.html#t%3AOccName" >OccName</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AOrig" >Orig</A > <A HREF="Module.html#t%3AModule" >Module</A > <A HREF="OccName.html#t%3AOccName" >OccName</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AExact" >Exact</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkRdrUnqual" >mkRdrUnqual</A > :: <A HREF="OccName.html#t%3AOccName" >OccName</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkRdrQual" >mkRdrQual</A > :: <A HREF="Module.html#t%3AModuleName" >ModuleName</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkUnqual" >mkUnqual</A > :: <A HREF="OccName.html#t%3ANameSpace" >NameSpace</A > -> <A HREF="FastString.html#t%3AFastString" >FastString</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkVarUnqual" >mkVarUnqual</A > :: <A HREF="FastString.html#t%3AFastString" >FastString</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkQual" >mkQual</A > :: <A HREF="OccName.html#t%3ANameSpace" >NameSpace</A > -> (<A HREF="FastString.html#t%3AFastString" >FastString</A >, <A HREF="FastString.html#t%3AFastString" >FastString</A >) -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkOrig" >mkOrig</A > :: <A HREF="Module.html#t%3AModule" >Module</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AnameRdrName" >nameRdrName</A > :: <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetRdrName" >getRdrName</A > :: <A HREF="Name.html#t%3ANamedThing" >NamedThing</A > thing => thing -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkDerivedRdrName" >mkDerivedRdrName</A > :: <A HREF="Name.html#t%3AName" >Name</A > -> (<A HREF="OccName.html#t%3AOccName" >OccName</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A >) -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ArdrNameOcc" >rdrNameOcc</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ArdrNameSpace" >rdrNameSpace</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="OccName.html#t%3ANameSpace" >NameSpace</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetRdrNameSpace" >setRdrNameSpace</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="OccName.html#t%3ANameSpace" >NameSpace</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisRdrDataCon" >isRdrDataCon</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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%3AisRdrTyVar" >isRdrTyVar</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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%3AisRdrTc" >isRdrTc</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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%3AisQual" >isQual</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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%3AisQual_maybe" >isQual_maybe</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Module.html#t%3AModuleName" >ModuleName</A >, <A HREF="OccName.html#t%3AOccName" >OccName</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisUnqual" >isUnqual</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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%3AisOrig" >isOrig</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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%3AisOrig_maybe" >isOrig_maybe</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Module.html#t%3AModule" >Module</A >, <A HREF="OccName.html#t%3AOccName" >OccName</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisExact" >isExact</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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%3AisExact_maybe" >isExact_maybe</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisSrcRdrName" >isSrcRdrName</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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%3AshowRdrName" >showRdrName</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ALocalRdrEnv" >LocalRdrEnv</A > = <A HREF="OccName.html#t%3AOccEnv" >OccEnv</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AemptyLocalRdrEnv" >emptyLocalRdrEnv</A > :: <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AextendLocalRdrEnv" >extendLocalRdrEnv</A > :: <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AextendLocalRdrEnvList" >extendLocalRdrEnvList</A > :: <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A > -> [<A HREF="Name.html#t%3AName" >Name</A >] -> <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlookupLocalRdrEnv" >lookupLocalRdrEnv</A > :: <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlookupLocalRdrOcc" >lookupLocalRdrOcc</A > :: <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AelemLocalRdrEnv" >elemLocalRdrEnv</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</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%3AGlobalRdrEnv" >GlobalRdrEnv</A > = <A HREF="OccName.html#t%3AOccEnv" >OccEnv</A > [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AemptyGlobalRdrEnv" >emptyGlobalRdrEnv</A > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkGlobalRdrEnv" >mkGlobalRdrEnv</A > :: [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >] -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AplusGlobalRdrEnv" >plusGlobalRdrEnv</A > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlookupGlobalRdrEnv" >lookupGlobalRdrEnv</A > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A > -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AextendGlobalRdrEnv" >extendGlobalRdrEnv</A > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A > -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprGlobalRdrEnv" >pprGlobalRdrEnv</A > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AglobalRdrEnvElts" >globalRdrEnvElts</A > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlookupGRE_RdrName" >lookupGRE_RdrName</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlookupGRE_Name" >lookupGRE_Name</A > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetGRE_NameQualifier_maybes" >getGRE_NameQualifier_maybes</A > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> [<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > [<A HREF="Module.html#t%3AModuleName" >ModuleName</A >]]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AhideSomeUnquals" >hideSomeUnquals</A > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> [<A HREF="OccName.html#t%3AOccName" >OccName</A >] -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfindLocalDupsRdrEnv" >findLocalDupsRdrEnv</A > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> [<A HREF="OccName.html#t%3AOccName" >OccName</A >] -> (<A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A >, [[<A HREF="Name.html#t%3AName" >Name</A >]])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApickGREs" >pickGREs</A > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >] -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AGlobalRdrElt" >GlobalRdrElt</A > = <A HREF="#v%3AGRE" >GRE</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Agre_name" >gre_name</A > :: <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Agre_par" >gre_par</A > :: <A HREF="RdrName.html#t%3AParent" >Parent</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Agre_prov" >gre_prov</A > :: <A HREF="RdrName.html#t%3AProvenance" >Provenance</A ></TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisLocalGRE" >isLocalGRE</A > :: <A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</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%3AunQualOK" >unQualOK</A > :: <A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</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%3AqualSpecOK" >qualSpecOK</A > :: <A HREF="Module.html#t%3AModuleName" >ModuleName</A > -> <A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</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%3AunQualSpecOK" >unQualSpecOK</A > :: <A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</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" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AProvenance" >Provenance</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ALocalDef" >LocalDef</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImported" >Imported</A > [<A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A >]</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprNameProvenance" >pprNameProvenance</A > :: <A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</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%3AParent" >Parent</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ANoParent" >NoParent</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AParentIs" >ParentIs</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AImportSpec" >ImportSpec</A > = <A HREF="#v%3AImpSpec" >ImpSpec</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Ais_decl" >is_decl</A > :: <A HREF="RdrName.html#t%3AImpDeclSpec" >ImpDeclSpec</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Ais_item" >is_item</A > :: <A HREF="RdrName.html#t%3AImpItemSpec" >ImpItemSpec</A ></TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AImpDeclSpec" >ImpDeclSpec</A > = <A HREF="#v%3AImpDeclSpec" >ImpDeclSpec</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Ais_mod" >is_mod</A > :: <A HREF="Module.html#t%3AModuleName" >ModuleName</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Ais_as" >is_as</A > :: <A HREF="Module.html#t%3AModuleName" >ModuleName</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Ais_qual" >is_qual</A > :: <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Ais_dloc" >is_dloc</A > :: <A HREF="SrcLoc.html#t%3ASrcSpan" >SrcSpan</A ></TD ></TR ></TABLE >}</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%3AImpItemSpec" >ImpItemSpec</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AImpAll" >ImpAll</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AImpSome" >ImpSome</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Ais_explicit" >is_explicit</A > :: <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Ais_iloc" >is_iloc</A > :: <A HREF="SrcLoc.html#t%3ASrcSpan" >SrcSpan</A ></TD ></TR ></TABLE >}</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AimportSpecLoc" >importSpecLoc</A > :: <A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A > -> <A HREF="SrcLoc.html#t%3ASrcSpan" >SrcSpan</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AimportSpecModule" >importSpecModule</A > :: <A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A > -> <A HREF="Module.html#t%3AModuleName" >ModuleName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisExplicitItem" >isExplicitItem</A > :: <A HREF="RdrName.html#t%3AImpItemSpec" >ImpItemSpec</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</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 main type </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:RdrName" ><A NAME="t%3ARdrName" ></A ></A ><B >RdrName</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Do not use the data constructors of RdrName directly: prefer the family of functions that creates them, such as <TT ><A HREF="RdrName.html#v%3AmkRdrUnqual" >mkRdrUnqual</A ></TT > </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Unqual" ><A NAME="v%3AUnqual" ></A ></A ><B >Unqual</B > <A HREF="OccName.html#t%3AOccName" >OccName</A ></TD ><TD CLASS="rdoc" >Used for ordinary, unqualified occurrences, e.g. <TT >x</TT >, <TT >y</TT > or <TT >Foo</TT >. Create such a <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > with <TT ><A HREF="RdrName.html#v%3AmkRdrUnqual" >mkRdrUnqual</A ></TT > </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Qual" ><A NAME="v%3AQual" ></A ></A ><B >Qual</B > <A HREF="Module.html#t%3AModuleName" >ModuleName</A > <A HREF="OccName.html#t%3AOccName" >OccName</A ></TD ><TD CLASS="rdoc" >A qualified name written by the user in <EM >source</EM > code. The module isn't necessarily the module where the thing is defined; just the one from which it is imported. Examples are <TT >Bar.x</TT >, <TT >Bar.y</TT > or <TT >Bar.Foo</TT >. Create such a <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > with <TT ><A HREF="RdrName.html#v%3AmkRdrQual" >mkRdrQual</A ></TT > </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Orig" ><A NAME="v%3AOrig" ></A ></A ><B >Orig</B > <A HREF="Module.html#t%3AModule" >Module</A > <A HREF="OccName.html#t%3AOccName" >OccName</A ></TD ><TD CLASS="rdoc" >An original name; the module is the <EM >defining</EM > module. This is used when GHC generates code that will be fed into the renamer (e.g. from deriving clauses), but where we want to say "Use Prelude.map dammit". One of these can be created with <TT ><A HREF="RdrName.html#v%3AmkOrig" >mkOrig</A ></TT > </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Exact" ><A NAME="v%3AExact" ></A ></A ><B >Exact</B > <A HREF="Name.html#t%3AName" >Name</A ></TD ><TD CLASS="rdoc" ><P >We know exactly the <TT ><A HREF="Name.html#t%3AName" >Name</A ></TT >. This is used: </P ><OL ><LI > When the parser parses built-in syntax like <TT >[]</TT > and <TT >(,)</TT >, but wants a <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > from it </LI ><LI > By Template Haskell, when TH has generated a unique name </LI ></OL ><P >Such a <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > can be created by using <TT ><A HREF="RdrName.html#v%3AgetRdrName" >getRdrName</A ></TT > on a <TT ><A HREF="Name.html#t%3AName" >Name</A ></TT > </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:RdrName')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:RdrName" 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="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputableBndr" >OutputableBndr</A > <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="2" ><A NAME="2" >Construction </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkRdrUnqual" ><A NAME="v%3AmkRdrUnqual" ></A ></A ><B >mkRdrUnqual</B > :: <A HREF="OccName.html#t%3AOccName" >OccName</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkRdrQual" ><A NAME="v%3AmkRdrQual" ></A ></A ><B >mkRdrQual</B > :: <A HREF="Module.html#t%3AModuleName" >ModuleName</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkUnqual" ><A NAME="v%3AmkUnqual" ></A ></A ><B >mkUnqual</B > :: <A HREF="OccName.html#t%3ANameSpace" >NameSpace</A > -> <A HREF="FastString.html#t%3AFastString" >FastString</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkVarUnqual" ><A NAME="v%3AmkVarUnqual" ></A ></A ><B >mkVarUnqual</B > :: <A HREF="FastString.html#t%3AFastString" >FastString</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkQual" ><A NAME="v%3AmkQual" ></A ></A ><B >mkQual</B > :: <A HREF="OccName.html#t%3ANameSpace" >NameSpace</A > -> (<A HREF="FastString.html#t%3AFastString" >FastString</A >, <A HREF="FastString.html#t%3AFastString" >FastString</A >) -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="doc" >Make a qualified <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > in the given namespace and where the <TT ><A HREF="Module.html#t%3AModuleName" >ModuleName</A ></TT > and the <TT ><A HREF="OccName.html#t%3AOccName" >OccName</A ></TT > are taken from the first and second elements of the tuple respectively </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkOrig" ><A NAME="v%3AmkOrig" ></A ></A ><B >mkOrig</B > :: <A HREF="Module.html#t%3AModule" >Module</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:nameRdrName" ><A NAME="v%3AnameRdrName" ></A ></A ><B >nameRdrName</B > :: <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getRdrName" ><A NAME="v%3AgetRdrName" ></A ></A ><B >getRdrName</B > :: <A HREF="Name.html#t%3ANamedThing" >NamedThing</A > thing => thing -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkDerivedRdrName" ><A NAME="v%3AmkDerivedRdrName" ></A ></A ><B >mkDerivedRdrName</B > :: <A HREF="Name.html#t%3AName" >Name</A > -> (<A HREF="OccName.html#t%3AOccName" >OccName</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A >) -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="doc" >Produce an original <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > whose module that of a parent <TT ><A HREF="Name.html#t%3AName" >Name</A ></TT > but its <TT ><A HREF="OccName.html#t%3AOccName" >OccName</A ></TT > is derived from that of it's parent using the supplied function </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="3" ><A NAME="3" >Destruction </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:rdrNameOcc" ><A NAME="v%3ArdrNameOcc" ></A ></A ><B >rdrNameOcc</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:rdrNameSpace" ><A NAME="v%3ArdrNameSpace" ></A ></A ><B >rdrNameSpace</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="OccName.html#t%3ANameSpace" >NameSpace</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setRdrNameSpace" ><A NAME="v%3AsetRdrNameSpace" ></A ></A ><B >setRdrNameSpace</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="OccName.html#t%3ANameSpace" >NameSpace</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >This rather gruesome function is used mainly by the parser. When parsing: </P ><PRE > data T a = T | T1 Int </PRE ><P >we parse the data constructors as <EM >types</EM > because of parser ambiguities, so then we need to change the <EM >type constr</EM > to a <EM >data constr</EM > </P ><P >The exact-name case <EM >can</EM > occur when parsing: </P ><PRE > data [] a = [] | a : [a] </PRE ><P >For the exact-name case we return an original name. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isRdrDataCon" ><A NAME="v%3AisRdrDataCon" ></A ></A ><B >isRdrDataCon</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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:isRdrTyVar" ><A NAME="v%3AisRdrTyVar" ></A ></A ><B >isRdrTyVar</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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:isRdrTc" ><A NAME="v%3AisRdrTc" ></A ></A ><B >isRdrTc</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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:isQual" ><A NAME="v%3AisQual" ></A ></A ><B >isQual</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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:isQual_maybe" ><A NAME="v%3AisQual_maybe" ></A ></A ><B >isQual_maybe</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Module.html#t%3AModuleName" >ModuleName</A >, <A HREF="OccName.html#t%3AOccName" >OccName</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isUnqual" ><A NAME="v%3AisUnqual" ></A ></A ><B >isUnqual</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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:isOrig" ><A NAME="v%3AisOrig" ></A ></A ><B >isOrig</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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:isOrig_maybe" ><A NAME="v%3AisOrig_maybe" ></A ></A ><B >isOrig_maybe</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Module.html#t%3AModule" >Module</A >, <A HREF="OccName.html#t%3AOccName" >OccName</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isExact" ><A NAME="v%3AisExact" ></A ></A ><B >isExact</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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:isExact_maybe" ><A NAME="v%3AisExact_maybe" ></A ></A ><B >isExact_maybe</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isSrcRdrName" ><A NAME="v%3AisSrcRdrName" ></A ></A ><B >isSrcRdrName</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</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="section2" ><A NAME="4" ><A NAME="4" >Printing </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:showRdrName" ><A NAME="v%3AshowRdrName" ></A ></A ><B >showRdrName</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="5" ><A NAME="5" >Local mapping of <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > to <TT ><A HREF="Name.html#t%3AName" >Name</A ></TT > </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:LocalRdrEnv" ><A NAME="t%3ALocalRdrEnv" ></A ></A ><B >LocalRdrEnv</B > = <A HREF="OccName.html#t%3AOccEnv" >OccEnv</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="doc" >This environment is used to store local bindings (<TT >let</TT >, <TT >where</TT >, lambda, <TT >case</TT >). It is keyed by OccName, because we never use it for qualified names </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:emptyLocalRdrEnv" ><A NAME="v%3AemptyLocalRdrEnv" ></A ></A ><B >emptyLocalRdrEnv</B > :: <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:extendLocalRdrEnv" ><A NAME="v%3AextendLocalRdrEnv" ></A ></A ><B >extendLocalRdrEnv</B > :: <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:extendLocalRdrEnvList" ><A NAME="v%3AextendLocalRdrEnvList" ></A ></A ><B >extendLocalRdrEnvList</B > :: <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A > -> [<A HREF="Name.html#t%3AName" >Name</A >] -> <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lookupLocalRdrEnv" ><A NAME="v%3AlookupLocalRdrEnv" ></A ></A ><B >lookupLocalRdrEnv</B > :: <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A > -> <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lookupLocalRdrOcc" ><A NAME="v%3AlookupLocalRdrOcc" ></A ></A ><B >lookupLocalRdrOcc</B > :: <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:elemLocalRdrEnv" ><A NAME="v%3AelemLocalRdrEnv" ></A ></A ><B >elemLocalRdrEnv</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="RdrName.html#t%3ALocalRdrEnv" >LocalRdrEnv</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="section1" ><A NAME="6" ><A NAME="6" >Global mapping of <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > to <TT ><A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A ></TT >s </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:GlobalRdrEnv" ><A NAME="t%3AGlobalRdrEnv" ></A ></A ><B >GlobalRdrEnv</B > = <A HREF="OccName.html#t%3AOccEnv" >OccEnv</A > [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="doc" ><P >Keyed by <TT ><A HREF="OccName.html#t%3AOccName" >OccName</A ></TT >; when looking up a qualified name we look up the <TT ><A HREF="OccName.html#t%3AOccName" >OccName</A ></TT > part, and then check the <TT ><A HREF="RdrName.html#t%3AProvenance" >Provenance</A ></TT > to see if the appropriate qualification is valid. This saves routinely doubling the size of the env by adding both qualified and unqualified names to the domain. </P ><P >The list in the codomain is required because there may be name clashes These only get reported on lookup, not on construction </P ><P >INVARIANT: All the members of the list have distinct <TT ><A HREF="RdrName.html#v%3Agre_name" >gre_name</A ></TT > fields; that is, no duplicate Names </P ><P >INVARIANT: Imported provenance => Name is an ExternalName However LocalDefs can have an InternalName. This happens only when type-checking a [d| ... |] Template Haskell quotation; see this note in RnNames Note [Top-level Names in Template Haskell decl quotes] </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:emptyGlobalRdrEnv" ><A NAME="v%3AemptyGlobalRdrEnv" ></A ></A ><B >emptyGlobalRdrEnv</B > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkGlobalRdrEnv" ><A NAME="v%3AmkGlobalRdrEnv" ></A ></A ><B >mkGlobalRdrEnv</B > :: [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >] -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:plusGlobalRdrEnv" ><A NAME="v%3AplusGlobalRdrEnv" ></A ></A ><B >plusGlobalRdrEnv</B > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lookupGlobalRdrEnv" ><A NAME="v%3AlookupGlobalRdrEnv" ></A ></A ><B >lookupGlobalRdrEnv</B > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A > -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:extendGlobalRdrEnv" ><A NAME="v%3AextendGlobalRdrEnv" ></A ></A ><B >extendGlobalRdrEnv</B > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A > -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprGlobalRdrEnv" ><A NAME="v%3ApprGlobalRdrEnv" ></A ></A ><B >pprGlobalRdrEnv</B > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:globalRdrEnvElts" ><A NAME="v%3AglobalRdrEnvElts" ></A ></A ><B >globalRdrEnvElts</B > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lookupGRE_RdrName" ><A NAME="v%3AlookupGRE_RdrName" ></A ></A ><B >lookupGRE_RdrName</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lookupGRE_Name" ><A NAME="v%3AlookupGRE_Name" ></A ></A ><B >lookupGRE_Name</B > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getGRE_NameQualifier_maybes" ><A NAME="v%3AgetGRE_NameQualifier_maybes" ></A ></A ><B >getGRE_NameQualifier_maybes</B > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> [<A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > [<A HREF="Module.html#t%3AModuleName" >ModuleName</A >]]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:hideSomeUnquals" ><A NAME="v%3AhideSomeUnquals" ></A ></A ><B >hideSomeUnquals</B > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> [<A HREF="OccName.html#t%3AOccName" >OccName</A >] -> <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >Hide any unqualified bindings for the specified OccNames This is used in TH, when renaming a declaration bracket </P ><PRE > [d| foo = ... |] </PRE ><P >We want unqualified <TT >foo</TT > in <A HREF="---.html" >...</A > to mean this <TT >foo</TT >, not the one from the enclosing module. But the <EM >qualified</EM > name from the enclosing module must certainly still be available </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:findLocalDupsRdrEnv" ><A NAME="v%3AfindLocalDupsRdrEnv" ></A ></A ><B >findLocalDupsRdrEnv</B > :: <A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A > -> [<A HREF="OccName.html#t%3AOccName" >OccName</A >] -> (<A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A >, [[<A HREF="Name.html#t%3AName" >Name</A >]])</TD ></TR ><TR ><TD CLASS="doc" >For each <TT ><A HREF="OccName.html#t%3AOccName" >OccName</A ></TT >, see if there are multiple local definitions for it. If so, remove all but one (to suppress subsequent error messages) and return a list of the duplicate bindings </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pickGREs" ><A NAME="v%3ApickGREs" ></A ></A ><B >pickGREs</B > :: <A HREF="RdrName.html#t%3ARdrName" >RdrName</A > -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >] -> [<A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A >]</TD ></TR ><TR ><TD CLASS="doc" ><P >Take a list of GREs which have the right OccName Pick those GREs that are suitable for this RdrName And for those, keep only only the Provenances that are suitable </P ><P >Consider: </P ><PRE > module A ( f ) where import qualified Foo( f ) import Baz( f ) f = undefined </PRE ><P >Let's suppose that <TT >Foo.f</TT > and <TT >Baz.f</TT > are the same entity really. The export of <TT >f</TT > is ambiguous because it's in scope from the local def and the import. The lookup of <TT >Unqual f</TT > should return a GRE for the locally-defined <TT >f</TT >, and a GRE for the imported <TT >f</TT >, with a <EM >single</EM > provenance, namely the one for <TT >Baz(f)</TT >. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="7" ><A NAME="7" >Global <TT ><A HREF="RdrName.html#t%3ARdrName" >RdrName</A ></TT > mapping elements: <TT ><A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A ></TT >, <TT ><A HREF="RdrName.html#t%3AProvenance" >Provenance</A ></TT >, <TT ><A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A ></TT > </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:GlobalRdrElt" ><A NAME="t%3AGlobalRdrElt" ></A ></A ><B >GlobalRdrElt</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >An element of the <TT ><A HREF="RdrName.html#t%3AGlobalRdrEnv" >GlobalRdrEnv</A ></TT > </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:GRE" ><A NAME="v%3AGRE" ></A ></A ><B >GRE</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:gre_name" ><A NAME="v%3Agre_name" ></A ></A ><B >gre_name</B > :: <A HREF="Name.html#t%3AName" >Name</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:gre_par" ><A NAME="v%3Agre_par" ></A ></A ><B >gre_par</B > :: <A HREF="RdrName.html#t%3AParent" >Parent</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:gre_prov" ><A NAME="v%3Agre_prov" ></A ></A ><B >gre_prov</B > :: <A HREF="RdrName.html#t%3AProvenance" >Provenance</A ></TD ><TD CLASS="rdoc" >Why it's in scope </TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:GlobalRdrElt')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:GlobalRdrElt" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isLocalGRE" ><A NAME="v%3AisLocalGRE" ></A ></A ><B >isLocalGRE</B > :: <A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</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:unQualOK" ><A NAME="v%3AunQualOK" ></A ></A ><B >unQualOK</B > :: <A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Test if an unqualifed version of this thing would be in scope </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:qualSpecOK" ><A NAME="v%3AqualSpecOK" ></A ></A ><B >qualSpecOK</B > :: <A HREF="Module.html#t%3AModuleName" >ModuleName</A > -> <A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Is in scope qualified with the given module? </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unQualSpecOK" ><A NAME="v%3AunQualSpecOK" ></A ></A ><B >unQualSpecOK</B > :: <A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Is in scope unqualified? </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Provenance" ><A NAME="t%3AProvenance" ></A ></A ><B >Provenance</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >The <TT ><A HREF="RdrName.html#t%3AProvenance" >Provenance</A ></TT > of something says how it came to be in scope. It's quite elaborate so that we can give accurate unused-name warnings. </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:LocalDef" ><A NAME="v%3ALocalDef" ></A ></A ><B >LocalDef</B ></TD ><TD CLASS="rdoc" >The thing was defined locally </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Imported" ><A NAME="v%3AImported" ></A ></A ><B >Imported</B > [<A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A >]</TD ><TD CLASS="rdoc" ><P >The thing was imported. </P ><P >INVARIANT: the list of <TT ><A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A ></TT > is non-empty </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Provenance')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Provenance" 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="RdrName.html#t%3AProvenance" >Provenance</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="RdrName.html#t%3AProvenance" >Provenance</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprNameProvenance" ><A NAME="v%3ApprNameProvenance" ></A ></A ><B >pprNameProvenance</B > :: <A HREF="RdrName.html#t%3AGlobalRdrElt" >GlobalRdrElt</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="doc" >Print out the place where the name was imported </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Parent" ><A NAME="t%3AParent" ></A ></A ><B >Parent</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >The children of a Name are the things that are abbreviated by the <A HREF="--.html" >..</A > notation in export lists. Specifically: TyCon Children are * data constructors * record field ids Class Children are * class operations Each child has the parent thing as its Parent </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:NoParent" ><A NAME="v%3ANoParent" ></A ></A ><B >NoParent</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ParentIs" ><A NAME="v%3AParentIs" ></A ></A ><B >ParentIs</B > <A HREF="Name.html#t%3AName" >Name</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Parent')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Parent" 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="RdrName.html#t%3AParent" >Parent</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="RdrName.html#t%3AParent" >Parent</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:ImportSpec" ><A NAME="t%3AImportSpec" ></A ></A ><B >ImportSpec</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:ImpSpec" ><A NAME="v%3AImpSpec" ></A ></A ><B >ImpSpec</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:is_decl" ><A NAME="v%3Ais_decl" ></A ></A ><B >is_decl</B > :: <A HREF="RdrName.html#t%3AImpDeclSpec" >ImpDeclSpec</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:is_item" ><A NAME="v%3Ais_item" ></A ></A ><B >is_item</B > :: <A HREF="RdrName.html#t%3AImpItemSpec" >ImpItemSpec</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ImportSpec')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:ImportSpec" 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="RdrName.html#t%3AImportSpec" >ImportSpec</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:ImpDeclSpec" ><A NAME="t%3AImpDeclSpec" ></A ></A ><B >ImpDeclSpec</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Describes a particular import declaration and is shared among all the <TT ><A HREF="RdrName.html#t%3AProvenance" >Provenance</A ></TT >s for that decl </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:ImpDeclSpec" ><A NAME="v%3AImpDeclSpec" ></A ></A ><B >ImpDeclSpec</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:is_mod" ><A NAME="v%3Ais_mod" ></A ></A ><B >is_mod</B > :: <A HREF="Module.html#t%3AModuleName" >ModuleName</A ></TD ><TD CLASS="rdoc" >Module imported, e.g. <TT >import Muggle</TT > Note the <TT >Muggle</TT > may well not be the defining module for this thing! </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:is_as" ><A NAME="v%3Ais_as" ></A ></A ><B >is_as</B > :: <A HREF="Module.html#t%3AModuleName" >ModuleName</A ></TD ><TD CLASS="rdoc" >Import alias, e.g. from <TT >as M</TT > (or <TT >Muggle</TT > if there is no <TT >as</TT > clause) </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:is_qual" ><A NAME="v%3Ais_qual" ></A ></A ><B >is_qual</B > :: <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="rdoc" >Was this import qualified? </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:is_dloc" ><A NAME="v%3Ais_dloc" ></A ></A ><B >is_dloc</B > :: <A HREF="SrcLoc.html#t%3ASrcSpan" >SrcSpan</A ></TD ><TD CLASS="rdoc" >The location of the entire import declaration </TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ImpDeclSpec')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:ImpDeclSpec" 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="RdrName.html#t%3AImpDeclSpec" >ImpDeclSpec</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="RdrName.html#t%3AImpDeclSpec" >ImpDeclSpec</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:ImpItemSpec" ><A NAME="t%3AImpItemSpec" ></A ></A ><B >ImpItemSpec</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Describes import info a particular Name </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:ImpAll" ><A NAME="v%3AImpAll" ></A ></A ><B >ImpAll</B ></TD ><TD CLASS="rdoc" >The import had no import list, or had a hiding list </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ImpSome" ><A NAME="v%3AImpSome" ></A ></A ><B >ImpSome</B ></TD ><TD CLASS="rdoc" ><P >The import had an import list. The <TT ><A HREF="RdrName.html#v%3Ais_explicit" >is_explicit</A ></TT > field is <TT >True</TT > iff the thing was named <EM >explicitly</EM > in the import specs rather than being imported as part of a <A HREF="---.html" >...</A > group. Consider: </P ><PRE > import C( T(..) ) </PRE ><P >Here the constructors of <TT >T</TT > are not named explicitly; only <TT >T</TT > is named explicitly. </P ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:is_explicit" ><A NAME="v%3Ais_explicit" ></A ></A ><B >is_explicit</B > :: <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:is_iloc" ><A NAME="v%3Ais_iloc" ></A ></A ><B >is_iloc</B > :: <A HREF="SrcLoc.html#t%3ASrcSpan" >SrcSpan</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ImpItemSpec')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:ImpItemSpec" 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="RdrName.html#t%3AImpItemSpec" >ImpItemSpec</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="RdrName.html#t%3AImpItemSpec" >ImpItemSpec</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:importSpecLoc" ><A NAME="v%3AimportSpecLoc" ></A ></A ><B >importSpecLoc</B > :: <A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A > -> <A HREF="SrcLoc.html#t%3ASrcSpan" >SrcSpan</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:importSpecModule" ><A NAME="v%3AimportSpecModule" ></A ></A ><B >importSpecModule</B > :: <A HREF="RdrName.html#t%3AImportSpec" >ImportSpec</A > -> <A HREF="Module.html#t%3AModuleName" >ModuleName</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isExplicitItem" ><A NAME="v%3AisExplicitItem" ></A ></A ><B >isExplicitItem</B > :: <A HREF="RdrName.html#t%3AImpItemSpec" >ImpItemSpec</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="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >