Safe Haskell | None |
---|---|
Language | Haskell98 |
- 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
Manipulating these sets
unitNameSet :: Name -> NameSetSource
unionNameSets :: NameSet -> NameSet -> NameSetSource
unionManyNameSets :: [NameSet] -> NameSetSource
minusNameSet :: NameSet -> NameSet -> NameSetSource
elemNameSet :: Name -> NameSet -> BoolSource
nameSetToList :: NameSet -> [Name]Source
addOneToNameSet :: NameSet -> Name -> NameSetSource
addListToNameSet :: NameSet -> [Name] -> NameSetSource
delFromNameSet :: NameSet -> Name -> NameSetSource
delListFromNameSet :: NameSet -> [Name] -> NameSetSource
isEmptyNameSet :: NameSet -> BoolSource
foldNameSet :: (Name -> b -> b) -> b -> NameSet -> bSource
intersectsNameSet :: NameSet -> NameSet -> BoolSource
True if there is a non-empty intersection.
s1
doesn't compute intersectsNameSet
s2s2
if s1
is empty
intersectNameSet :: NameSet -> NameSet -> NameSetSource
Free variables
Manipulating sets of free variables
isEmptyFVs :: NameSet -> BoolSource
Defs and uses
type DefUse = (Maybe Defs, Uses)Source
(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