| ghc-6.10.4: The GHC API | Contents | Index
NameSet
Contents
Names set type Manipulating these sets Free variables Manipulating sets of free variables Defs and uses Manipulating defs and uses
Synopsis
type NameSet = UniqSet Name
emptyNameSet :: NameSet
unitNameSet :: Name -> NameSet
mkNameSet :: [Name] -> NameSet
unionNameSets :: NameSet -> NameSet -> NameSet
unionManyNameSets :: [NameSet] -> NameSet
minusNameSet :: NameSet -> NameSet -> NameSet
elemNameSet :: Name -> NameSet -> Bool
nameSetToList :: NameSet -> [Name]
addOneToNameSet :: NameSet -> Name -> NameSet
addListToNameSet :: NameSet -> [Name] -> NameSet
delFromNameSet :: NameSet -> Name -> NameSet
delListFromNameSet :: NameSet -> [Name] -> NameSet
isEmptyNameSet :: NameSet -> Bool
foldNameSet :: (Name -> b -> b) -> b -> NameSet -> b
filterNameSet :: (Name -> Bool) -> NameSet -> NameSet
intersectsNameSet :: NameSet -> NameSet -> Bool
intersectNameSet :: NameSet -> NameSet -> NameSet
type FreeVars = NameSet
isEmptyFVs :: NameSet -> Bool
emptyFVs :: FreeVars
plusFVs :: [FreeVars] -> FreeVars
plusFV :: FreeVars -> FreeVars -> FreeVars
mkFVs :: [Name] -> FreeVars
addOneFV :: FreeVars -> Name -> FreeVars
unitFV :: Name -> FreeVars
delFV :: Name -> FreeVars -> FreeVars
delFVs :: [Name] -> FreeVars -> FreeVars
type Defs = NameSet
type Uses = NameSet
type DefUse = (Maybe Defs, Uses)
type DefUses = [DefUse]
emptyDUs :: DefUses
usesOnly :: Uses -> DefUses
mkDUs :: [(Defs, Uses)] -> DefUses
plusDU :: DefUses -> DefUses -> DefUses
findUses :: DefUses -> Uses -> Uses
duDefs :: DefUses -> Defs
duUses :: DefUses -> Uses
allUses :: DefUses -> Uses
Names set type
type NameSet = UniqSet Name
Manipulating these sets
emptyNameSet :: NameSet
unitNameSet :: Name -> NameSet
mkNameSet :: [Name] -> NameSet
unionNameSets :: NameSet -> NameSet -> NameSet
unionManyNameSets :: [NameSet] -> NameSet
minusNameSet :: NameSet -> NameSet -> NameSet
elemNameSet :: Name -> NameSet -> Bool
nameSetToList :: NameSet -> [Name]
addOneToNameSet :: NameSet -> Name -> NameSet
addListToNameSet :: NameSet -> [Name] -> NameSet
delFromNameSet :: NameSet -> Name -> NameSet
delListFromNameSet :: NameSet -> [Name] -> NameSet
isEmptyNameSet :: NameSet -> Bool
foldNameSet :: (Name -> b -> b) -> b -> NameSet -> b
filterNameSet :: (Name -> Bool) -> NameSet -> NameSet
intersectsNameSet :: NameSet -> NameSet -> Bool
True if there is a non-empty intersection. `s1 `intersectsNameSet` s2` doesn't compute `s2` if `s1` is empty
intersectNameSet :: NameSet -> NameSet -> NameSet
Free variables
type FreeVars = NameSet
Manipulating sets of free variables
isEmptyFVs :: NameSet -> Bool
emptyFVs :: FreeVars
plusFVs :: [FreeVars] -> FreeVars
plusFV :: FreeVars -> FreeVars -> FreeVars
mkFVs :: [Name] -> FreeVars
addOneFV :: FreeVars -> Name -> FreeVars
unitFV :: Name -> FreeVars
delFV :: Name -> FreeVars -> FreeVars
delFVs :: [Name] -> FreeVars -> FreeVars
Defs and uses
type Defs = NameSet
A set of names that are defined somewhere
type Uses = NameSet
A set of names that are used somewhere
type DefUse = (Maybe Defs, Uses)
`(Just ds, us) =>` The use of any member of the `ds` implies that all the `us` are used too. Also, `us` may mention `ds`. `Nothing =>` Nothing is defined in this group, but nevertheless all the uses are essential. Used for instance declarations, for example
type DefUses = [DefUse]
A number of `DefUse`s in dependency order: earlier `Defs` scope over later `Uses`
Manipulating defs and uses
emptyDUs :: DefUses
usesOnly :: Uses -> DefUses
mkDUs :: [(Defs, Uses)] -> DefUses
plusDU :: DefUses -> DefUses -> DefUses
findUses :: DefUses -> Uses -> Uses
Given some `DefUses` and some `Uses`, find all the uses, transitively. The result is a superset of the input `Uses`; and includes things defined in the input `DefUses` (but only if they are used)
duDefs :: DefUses -> Defs
duUses :: DefUses -> Uses
Just like `allUses`, but `Defs` are not eliminated from the `Uses` returned
allUses :: DefUses -> Uses
Collect all `Uses`, regardless of whether the group is itself used, but remove `Defs` on the way
Produced by Haddock version 2.4.2