ghc-6.10.1: The GHC APIContentsIndex
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:

Synopsis
data NameSpace
clsName :: NameSpace
varName :: 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 -> Int -> OccName
mkTupleOcc :: NameSpace -> Boxity -> Arity -> OccName
setOccNameSpace :: NameSpace -> OccName -> OccName
isDerivedOccName :: OccName -> Bool
mkWorkerOcc :: OccName -> OccName
mkSuperDictSelOcc :: Int -> OccName -> OccName
mkLocalOcc :: Unique -> OccName -> OccName
mkMethodOcc :: OccName -> OccName
mkInstTyTcOcc :: Int -> OccName -> OccName
occNameFS :: OccName -> FastString
occNameString :: OccName -> String
occNameSpace :: OccName -> NameSpace
isTvOcc :: OccName -> Bool
isDataSymOcc :: OccName -> Bool
isSymOcc :: OccName -> Bool
isValOcc :: OccName -> Bool
parenSymOcc :: OccName -> SDoc -> SDoc
reportIfUnused :: 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
isLexVar :: FastString -> Bool
isLexConSym :: FastString -> Bool
startsVarId :: Char -> Bool
The NameSpace type
data NameSpace
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.

clsName :: NameSpace
varName :: NameSpace
srcDataName :: NameSpace
Pretty Printing
pprNameSpace :: NameSpace -> SDoc
pprNonVarNameSpace :: NameSpace -> SDoc
pprNameSpaceBrief :: NameSpace -> SDoc
The OccName type
data OccName
show/hide Instances
pprOccName :: OccName -> SDoc
Construction
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
:: 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?
-> IntUnique index
-> OccNameE.g. $f3OrdMaybe
mkTupleOcc :: NameSpace -> Boxity -> Arity -> OccName
setOccNameSpace :: NameSpace -> OccName -> OccName
Derived OccNames
isDerivedOccName :: OccName -> Bool
mkWorkerOcc :: OccName -> OccName
mkSuperDictSelOcc
:: IntIndex of superclass, e.g. 3
-> OccNameClass, e.g. Ord
-> OccNameDerived Occname, e.g. $p3Ord
mkLocalOcc
:: UniqueUnique to combine with the OccName
-> OccNameLocal name, e.g. sat
-> OccNameNice unique version, e.g. $L23sat
mkMethodOcc :: OccName -> OccName
mkInstTyTcOcc
:: IntDFun Index
-> OccNameFamily name, e.g. Map
-> OccNameNice unique version, e.g. :R23Map
Derive a name for the representation type constructor of a data/newtype instance.
Deconstruction
occNameFS :: OccName -> FastString
occNameString :: OccName -> String
occNameSpace :: OccName -> NameSpace
isTvOcc :: OccName -> Bool
isDataSymOcc :: OccName -> Bool
Test if the OccName is a data constructor that starts with a symbol (e.g. :, or [])
isSymOcc :: OccName -> Bool
Test if the OccName is that for any operator (whether it is a data constructor or variable or whatever)
isValOcc :: OccName -> Bool
Value OccNamess are those that are either in the variable or data constructor namespaces
parenSymOcc :: OccName -> SDoc -> SDoc
Wrap parens around an operator
reportIfUnused :: OccName -> Bool
Haskell 98 encourages compilers to suppress warnings about unused names in a pattern if they start with _: this implements that test
isTcClsNameSpace :: NameSpace -> Bool
isTvNameSpace :: NameSpace -> Bool
isDataConNameSpace :: NameSpace -> Bool
isVarNameSpace :: NameSpace -> Bool
isValNameSpace :: NameSpace -> Bool
isTupleOcc_maybe :: OccName -> Maybe (NameSpace, Boxity, Arity)
The OccEnv type
data OccEnv a
show/hide Instances
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
The OccSet type
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
Tidying up
type TidyOccEnv = OccEnv Int
emptyTidyOccEnv :: TidyOccEnv
tidyOccName :: TidyOccEnv -> OccName -> (TidyOccEnv, OccName)
initTidyOccEnv :: [OccName] -> TidyOccEnv
Lexical characteristics of Haskell names
isLexVar :: FastString -> Bool
isLexConSym :: FastString -> Bool
startsVarId :: Char -> Bool
Produced by Haddock version 2.3.0