| Safe Haskell | Safe-Infered |
|---|
OccName
Contents
Description
- data NameSpace
- tcName, tcClsName, clsName :: NameSpace
- dataName, srcDataName :: NameSpace
- tvName, varName :: 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 -> TupleSort -> Arity -> OccName
- setOccNameSpace :: NameSpace -> OccName -> OccName
- demoteOccName :: OccName -> Maybe OccName
- isDerivedOccName :: OccName -> Bool
- mkDataConWrapperOcc, mkMaxTagOcc, mkTag2ConOcc, mkCon2TagOcc, mkClassOpAuxOcc, mkEqPredCoOcc, mkInstTyCoOcc, mkNewTyCoOcc, mkDataConWorkerOcc, mkDataCOcc, mkDataTOcc, mkGenRCo, mkGenR, mkGenD, mkGenOcc2, mkGenOcc1, mkForeignExportOcc, mkSpecOcc, mkIPOcc, mkDictOcc, mkClassDataConOcc, mkDerivedTyConOcc, mkGenDefMethodOcc, mkDefaultMethodOcc, mkWorkerOcc :: OccName -> OccName
- mkGenC :: OccName -> Int -> OccName
- mkGenS :: OccName -> Int -> Int -> OccName
- mkSuperDictSelOcc :: Int -> OccName -> OccName
- mkLocalOcc :: Unique -> OccName -> OccName
- mkMethodOcc :: OccName -> OccName
- mkInstTyTcOcc :: String -> OccSet -> OccName
- mkVectOcc, mkPDatasDataConOcc, mkPDatasTyConOcc, mkPDataDataConOcc, mkPDataTyConOcc, mkPReprTyConOcc, mkPADFunOcc, mkVectIsoOcc, mkVectDataConOcc, mkVectTyConOcc :: Maybe String -> OccName -> OccName
- occNameFS :: OccName -> FastString
- occNameString :: OccName -> String
- occNameSpace :: OccName -> NameSpace
- isVarOcc, isDataOcc, isTcOcc, isTvOcc :: 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, TupleSort, 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
- extendOccEnv_Acc :: (a -> b -> b) -> (a -> b) -> OccEnv b -> OccName -> a -> OccEnv b
- 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, isLexSym, isLexId, isLexVar :: FastString -> Bool
- isLexConId, isLexVarSym, isLexVarId, isLexConSym :: FastString -> Bool
- startsVarSym, startsConId, startsConSym, startsVarId :: Char -> Bool
The NameSpace type
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.
Pretty Printing
pprNameSpace :: NameSpace -> SDoc
pprNonVarNameSpace :: NameSpace -> SDoc
pprNameSpaceBrief :: NameSpace -> SDoc
The OccName type
data OccName
pprOccName :: OccName -> SDoc
Construction
mkOccNameFS :: NameSpace -> FastString -> OccName
mkVarOccFS :: FastString -> OccName
mkDataOccFS :: FastString -> OccName
mkTyVarOcc :: String -> OccName
mkTyVarOccFS :: FastString -> OccName
mkTcOccFS :: FastString -> OccName
mkClsOccFS :: FastString -> OccName
mkTupleOcc :: NameSpace -> TupleSort -> Arity -> OccName
setOccNameSpace :: NameSpace -> OccName -> OccName
demoteOccName :: OccName -> Maybe OccName
Derived OccNames
isDerivedOccName :: OccName -> Bool
mkDataConWrapperOcc, mkMaxTagOcc, mkTag2ConOcc, mkCon2TagOcc, mkClassOpAuxOcc, mkEqPredCoOcc, mkInstTyCoOcc, mkNewTyCoOcc, mkDataConWorkerOcc, mkDataCOcc, mkDataTOcc, mkGenRCo, mkGenR, mkGenD, mkGenOcc2, mkGenOcc1, mkForeignExportOcc, mkSpecOcc, mkIPOcc, mkDictOcc, mkClassDataConOcc, mkDerivedTyConOcc, mkGenDefMethodOcc, mkDefaultMethodOcc, mkWorkerOcc :: OccName -> OccName
mkMethodOcc :: OccName -> OccName
Derive a name for the representation type constructor of a
data/newtype instance.
mkVectOcc, mkPDatasDataConOcc, mkPDatasTyConOcc, mkPDataDataConOcc, mkPDataTyConOcc, mkPReprTyConOcc, mkPADFunOcc, mkVectIsoOcc, mkVectDataConOcc, mkVectTyConOcc :: Maybe String -> OccName -> OccName
Deconstruction
occNameFS :: OccName -> FastString
occNameString :: OccName -> String
occNameSpace :: OccName -> NameSpace
isDataSymOcc :: OccName -> Bool
Test if the OccName is a data constructor that starts with
a symbol (e.g. :, or [])
Test if the OccName is that for any operator (whether
it is a data constructor or variable or whatever)
Value OccNamess are those that are either in
the variable or data constructor namespaces
parenSymOcc :: OccName -> SDoc -> SDoc
Wrap parens around an operator
startsWithUnderscore :: OccName -> Bool
Haskell 98 encourages compilers to suppress warnings about unsed
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
The OccEnv type
data OccEnv a
Instances
| Outputable a => Outputable (OccEnv a) |
emptyOccEnv :: OccEnv a
unitOccEnv :: OccName -> a -> OccEnv a
extendOccEnv :: OccEnv a -> OccName -> a -> OccEnv a
lookupOccEnv :: OccEnv a -> OccName -> Maybe 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
extendOccEnv_Acc :: (a -> b -> b) -> (a -> b) -> OccEnv b -> OccName -> a -> OccEnv b
filterOccEnv :: (elt -> Bool) -> OccEnv elt -> OccEnv elt
delListFromOccEnv :: OccEnv a -> [OccName] -> OccEnv a
delFromOccEnv :: OccEnv a -> OccName -> OccEnv a
The OccSet type
unitOccSet :: 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
tidyOccName :: TidyOccEnv -> OccName -> (TidyOccEnv, OccName)
initTidyOccEnv :: [OccName] -> TidyOccEnv
Lexical characteristics of Haskell names
isLexConId, isLexVarSym, isLexVarId, isLexConSym :: FastString -> Bool
startsVarSym, startsConId, startsConSym, startsVarId :: Char -> Bool