ghc-6.12.1: The GHC APISource codeContentsIndex
OccName
Contents
The NameSpace type
Construction
Pretty Printing
The OccName type
Construction
Derived OccNames
Deconstruction
The OccEnv type
The OccSet type
Tidying up
Lexical characteristics of Haskell names
Description

GHC uses several kinds of name internally:

  • OccName represents names as strings with just a little more information: the "namespace" that the name came from, e.g. the namespace of value, type constructors or data constructors
  • RdrName.RdrName: see RdrName
  • Name.Name: see Name
  • Id.Id: see Id
  • Var.Var: see Var
Synopsis
data NameSpace
tcName :: NameSpace
clsName :: NameSpace
tcClsName :: NameSpace
dataName :: NameSpace
varName :: NameSpace
tvName :: NameSpace
srcDataName :: NameSpace
pprNameSpace :: NameSpace -> SDoc
pprNonVarNameSpace :: NameSpace -> SDoc
pprNameSpaceBrief :: NameSpace -> SDoc
data OccName
pprOccName :: OccName -> SDoc
mkOccName :: NameSpace -> String -> OccName
mkOccNameFS :: NameSpace -> FastString -> OccName
mkVarOcc :: String -> OccName
mkVarOccFS :: FastString -> OccName
mkDataOcc :: String -> OccName
mkDataOccFS :: FastString -> OccName
mkTyVarOcc :: String -> OccName
mkTyVarOccFS :: FastString -> OccName
mkTcOcc :: String -> OccName
mkTcOccFS :: FastString -> OccName
mkClsOcc :: String -> OccName
mkClsOccFS :: FastString -> OccName
mkDFunOcc :: String -> Bool -> OccSet -> OccName
mkTupleOcc :: NameSpace -> Boxity -> Arity -> OccName
setOccNameSpace :: NameSpace -> OccName -> OccName
isDerivedOccName :: OccName -> Bool
mkDataConWrapperOcc :: OccName -> OccName
mkWorkerOcc :: OccName -> OccName
mkDefaultMethodOcc :: OccName -> OccName
mkDerivedTyConOcc :: OccName -> OccName
mkNewTyCoOcc :: OccName -> OccName
mkCon2TagOcc :: OccName -> OccName
mkTag2ConOcc :: OccName -> OccName
mkMaxTagOcc :: OccName -> OccName
mkClassTyConOcc :: OccName -> OccName
mkClassDataConOcc :: OccName -> OccName
mkDictOcc :: OccName -> OccName
mkIPOcc :: OccName -> OccName
mkSpecOcc :: OccName -> OccName
mkForeignExportOcc :: OccName -> OccName
mkGenOcc1 :: OccName -> OccName
mkGenOcc2 :: OccName -> OccName
mkDataTOcc :: OccName -> OccName
mkDataCOcc :: OccName -> OccName
mkDataConWorkerOcc :: OccName -> OccName
mkSuperDictSelOcc :: Int -> OccName -> OccName
mkLocalOcc :: Unique -> OccName -> OccName
mkMethodOcc :: OccName -> OccName
mkInstTyTcOcc :: String -> OccSet -> OccName
mkInstTyCoOcc :: OccName -> OccName
mkEqPredCoOcc :: OccName -> OccName
mkVectOcc :: OccName -> OccName
mkVectTyConOcc :: OccName -> OccName
mkVectDataConOcc :: OccName -> OccName
mkVectIsoOcc :: OccName -> OccName
mkPDataTyConOcc :: OccName -> OccName
mkPDataDataConOcc :: OccName -> OccName
mkPReprTyConOcc :: OccName -> OccName
mkPADFunOcc :: OccName -> OccName
occNameFS :: OccName -> FastString
occNameString :: OccName -> String
occNameSpace :: OccName -> NameSpace
isVarOcc :: OccName -> Bool
isTvOcc :: OccName -> Bool
isTcOcc :: OccName -> Bool
isDataOcc :: OccName -> Bool
isDataSymOcc :: OccName -> Bool
isSymOcc :: OccName -> Bool
isValOcc :: OccName -> Bool
parenSymOcc :: OccName -> SDoc -> SDoc
startsWithUnderscore :: OccName -> Bool
isTcClsNameSpace :: NameSpace -> Bool
isTvNameSpace :: NameSpace -> Bool
isDataConNameSpace :: NameSpace -> Bool
isVarNameSpace :: NameSpace -> Bool
isValNameSpace :: NameSpace -> Bool
isTupleOcc_maybe :: OccName -> Maybe (NameSpace, Boxity, Arity)
data OccEnv a
emptyOccEnv :: OccEnv a
unitOccEnv :: OccName -> a -> OccEnv a
extendOccEnv :: OccEnv a -> OccName -> a -> OccEnv a
mapOccEnv :: (a -> b) -> OccEnv a -> OccEnv b
lookupOccEnv :: OccEnv a -> OccName -> Maybe a
mkOccEnv :: [(OccName, a)] -> OccEnv a
mkOccEnv_C :: (a -> a -> a) -> [(OccName, a)] -> OccEnv a
extendOccEnvList :: OccEnv a -> [(OccName, a)] -> OccEnv a
elemOccEnv :: OccName -> OccEnv a -> Bool
occEnvElts :: OccEnv a -> [a]
foldOccEnv :: (a -> b -> b) -> b -> OccEnv a -> b
plusOccEnv :: OccEnv a -> OccEnv a -> OccEnv a
plusOccEnv_C :: (a -> a -> a) -> OccEnv a -> OccEnv a -> OccEnv a
extendOccEnv_C :: (a -> a -> a) -> OccEnv a -> OccName -> a -> OccEnv a
filterOccEnv :: (elt -> Bool) -> OccEnv elt -> OccEnv elt
delListFromOccEnv :: OccEnv a -> [OccName] -> OccEnv a
delFromOccEnv :: OccEnv a -> OccName -> OccEnv a
type OccSet = UniqSet OccName
emptyOccSet :: OccSet
unitOccSet :: OccName -> OccSet
mkOccSet :: [OccName] -> OccSet
extendOccSet :: OccSet -> OccName -> OccSet
extendOccSetList :: OccSet -> [OccName] -> OccSet
unionOccSets :: OccSet -> OccSet -> OccSet
unionManyOccSets :: [OccSet] -> OccSet
minusOccSet :: OccSet -> OccSet -> OccSet
elemOccSet :: OccName -> OccSet -> Bool
occSetElts :: OccSet -> [OccName]
foldOccSet :: (OccName -> b -> b) -> b -> OccSet -> b
isEmptyOccSet :: OccSet -> Bool
intersectOccSet :: OccSet -> OccSet -> OccSet
intersectsOccSet :: OccSet -> OccSet -> Bool
type TidyOccEnv = OccEnv Int
emptyTidyOccEnv :: TidyOccEnv
tidyOccName :: TidyOccEnv -> OccName -> (TidyOccEnv, OccName)
initTidyOccEnv :: [OccName] -> TidyOccEnv
isLexCon :: FastString -> Bool
isLexVar :: FastString -> Bool
isLexId :: FastString -> Bool
isLexSym :: FastString -> Bool
isLexConId :: FastString -> Bool
isLexConSym :: FastString -> Bool
isLexVarId :: FastString -> Bool
isLexVarSym :: FastString -> Bool
startsVarSym :: Char -> Bool
startsVarId :: Char -> Bool
startsConSym :: Char -> Bool
startsConId :: Char -> Bool
The NameSpace type
data NameSpace Source
show/hide Instances
Construction

There are two forms of data constructor:

Source data constructors
The data constructors mentioned in Haskell source code
Real data constructors
The data constructors of the representation type, which may not be the same as the source type

For example:

 data T = T !(Int, Int)

The source datacon has type (Int, Int) -> T The real datacon has type Int -> Int -> T

GHC chooses a representation based on the strictness etc.

tcName :: NameSpaceSource
clsName :: NameSpaceSource
tcClsName :: NameSpaceSource
dataName :: NameSpaceSource
varName :: NameSpaceSource
tvName :: NameSpaceSource
srcDataName :: NameSpaceSource
Pretty Printing
pprNameSpace :: NameSpace -> SDocSource
pprNonVarNameSpace :: NameSpace -> SDocSource
pprNameSpaceBrief :: NameSpace -> SDocSource
The OccName type
data OccName Source
show/hide Instances
pprOccName :: OccName -> SDocSource
Construction
mkOccName :: NameSpace -> String -> OccNameSource
mkOccNameFS :: NameSpace -> FastString -> OccNameSource
mkVarOcc :: String -> OccNameSource
mkVarOccFS :: FastString -> OccNameSource
mkDataOcc :: String -> OccNameSource
mkDataOccFS :: FastString -> OccNameSource
mkTyVarOcc :: String -> OccNameSource
mkTyVarOccFS :: FastString -> OccNameSource
mkTcOcc :: String -> OccNameSource
mkTcOccFS :: FastString -> OccNameSource
mkClsOcc :: String -> OccNameSource
mkClsOccFS :: FastString -> OccNameSource
mkDFunOccSource
:: StringTypically the class and type glommed together e.g. OrdMaybe. Only used in debug mode, for extra clarity
-> BoolIs this a hs-boot instance DFun?
-> OccSetavoid these Occs
-> OccNameE.g. $f3OrdMaybe
mkTupleOcc :: NameSpace -> Boxity -> Arity -> OccNameSource
setOccNameSpace :: NameSpace -> OccName -> OccNameSource
Derived OccNames
isDerivedOccName :: OccName -> BoolSource
mkDataConWrapperOcc :: OccName -> OccNameSource
mkWorkerOcc :: OccName -> OccNameSource
mkDefaultMethodOcc :: OccName -> OccNameSource
mkDerivedTyConOcc :: OccName -> OccNameSource
mkNewTyCoOcc :: OccName -> OccNameSource
mkCon2TagOcc :: OccName -> OccNameSource
mkTag2ConOcc :: OccName -> OccNameSource
mkMaxTagOcc :: OccName -> OccNameSource
mkClassTyConOcc :: OccName -> OccNameSource
mkClassDataConOcc :: OccName -> OccNameSource
mkDictOcc :: OccName -> OccNameSource
mkIPOcc :: OccName -> OccNameSource
mkSpecOcc :: OccName -> OccNameSource
mkForeignExportOcc :: OccName -> OccNameSource
mkGenOcc1 :: OccName -> OccNameSource
mkGenOcc2 :: OccName -> OccNameSource
mkDataTOcc :: OccName -> OccNameSource
mkDataCOcc :: OccName -> OccNameSource
mkDataConWorkerOcc :: OccName -> OccNameSource
mkSuperDictSelOccSource
:: IntIndex of superclass, e.g. 3
-> OccNameClass, e.g. Ord
-> OccNameDerived Occname, e.g. $p3Ord
mkLocalOccSource
:: UniqueUnique to combine with the OccName
-> OccNameLocal name, e.g. sat
-> OccNameNice unique version, e.g. $L23sat
mkMethodOcc :: OccName -> OccNameSource
mkInstTyTcOccSource
:: StringFamily name, e.g. Map
-> OccSetavoid these Occs
-> OccName
R:Map
Derive a name for the representation type constructor of a data/newtype instance.
mkInstTyCoOcc :: OccName -> OccNameSource
mkEqPredCoOcc :: OccName -> OccNameSource
mkVectOcc :: OccName -> OccNameSource
mkVectTyConOcc :: OccName -> OccNameSource
mkVectDataConOcc :: OccName -> OccNameSource
mkVectIsoOcc :: OccName -> OccNameSource
mkPDataTyConOcc :: OccName -> OccNameSource
mkPDataDataConOcc :: OccName -> OccNameSource
mkPReprTyConOcc :: OccName -> OccNameSource
mkPADFunOcc :: OccName -> OccNameSource
Deconstruction
occNameFS :: OccName -> FastStringSource
occNameString :: OccName -> StringSource
occNameSpace :: OccName -> NameSpaceSource
isVarOcc :: OccName -> BoolSource
isTvOcc :: OccName -> BoolSource
isTcOcc :: OccName -> BoolSource
isDataOcc :: OccName -> BoolSource
isDataSymOcc :: OccName -> BoolSource
Test if the OccName is a data constructor that starts with a symbol (e.g. :, or [])
isSymOcc :: OccName -> BoolSource
Test if the OccName is that for any operator (whether it is a data constructor or variable or whatever)
isValOcc :: OccName -> BoolSource
Value OccNamess are those that are either in the variable or data constructor namespaces
parenSymOcc :: OccName -> SDoc -> SDocSource
Wrap parens around an operator
startsWithUnderscore :: OccName -> BoolSource
Haskell 98 encourages compilers to suppress warnings about unsed names in a pattern if they start with _: this implements that test
isTcClsNameSpace :: NameSpace -> BoolSource
isTvNameSpace :: NameSpace -> BoolSource
isDataConNameSpace :: NameSpace -> BoolSource
isVarNameSpace :: NameSpace -> BoolSource
isValNameSpace :: NameSpace -> BoolSource
isTupleOcc_maybe :: OccName -> Maybe (NameSpace, Boxity, Arity)Source
The OccEnv type
data OccEnv a Source
show/hide Instances
emptyOccEnv :: OccEnv aSource
unitOccEnv :: OccName -> a -> OccEnv aSource
extendOccEnv :: OccEnv a -> OccName -> a -> OccEnv aSource
mapOccEnv :: (a -> b) -> OccEnv a -> OccEnv bSource
lookupOccEnv :: OccEnv a -> OccName -> Maybe aSource
mkOccEnv :: [(OccName, a)] -> OccEnv aSource
mkOccEnv_C :: (a -> a -> a) -> [(OccName, a)] -> OccEnv aSource
extendOccEnvList :: OccEnv a -> [(OccName, a)] -> OccEnv aSource
elemOccEnv :: OccName -> OccEnv a -> BoolSource
occEnvElts :: OccEnv a -> [a]Source
foldOccEnv :: (a -> b -> b) -> b -> OccEnv a -> bSource
plusOccEnv :: OccEnv a -> OccEnv a -> OccEnv aSource
plusOccEnv_C :: (a -> a -> a) -> OccEnv a -> OccEnv a -> OccEnv aSource
extendOccEnv_C :: (a -> a -> a) -> OccEnv a -> OccName -> a -> OccEnv aSource
filterOccEnv :: (elt -> Bool) -> OccEnv elt -> OccEnv eltSource
delListFromOccEnv :: OccEnv a -> [OccName] -> OccEnv aSource
delFromOccEnv :: OccEnv a -> OccName -> OccEnv aSource
The OccSet type
type OccSet = UniqSet OccNameSource
emptyOccSet :: OccSetSource
unitOccSet :: OccName -> OccSetSource
mkOccSet :: [OccName] -> OccSetSource
extendOccSet :: OccSet -> OccName -> OccSetSource
extendOccSetList :: OccSet -> [OccName] -> OccSetSource
unionOccSets :: OccSet -> OccSet -> OccSetSource
unionManyOccSets :: [OccSet] -> OccSetSource
minusOccSet :: OccSet -> OccSet -> OccSetSource
elemOccSet :: OccName -> OccSet -> BoolSource
occSetElts :: OccSet -> [OccName]Source
foldOccSet :: (OccName -> b -> b) -> b -> OccSet -> bSource
isEmptyOccSet :: OccSet -> BoolSource
intersectOccSet :: OccSet -> OccSet -> OccSetSource
intersectsOccSet :: OccSet -> OccSet -> BoolSource
Tidying up
type TidyOccEnv = OccEnv IntSource
emptyTidyOccEnv :: TidyOccEnvSource
tidyOccName :: TidyOccEnv -> OccName -> (TidyOccEnv, OccName)Source
initTidyOccEnv :: [OccName] -> TidyOccEnvSource
Lexical characteristics of Haskell names
isLexCon :: FastString -> BoolSource
isLexVar :: FastString -> BoolSource
isLexId :: FastString -> BoolSource
isLexSym :: FastString -> BoolSource
isLexConId :: FastString -> BoolSource
isLexConSym :: FastString -> BoolSource
isLexVarId :: FastString -> BoolSource
isLexVarSym :: FastString -> BoolSource
startsVarSym :: Char -> BoolSource
startsVarId :: Char -> BoolSource
startsConSym :: Char -> BoolSource
startsConId :: Char -> BoolSource
Produced by Haddock version 2.6.0