Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type VarSet = UniqSet Var
- type IdSet = UniqSet Id
- type TyVarSet = UniqSet TyVar
- type CoVarSet = UniqSet CoVar
- type TyCoVarSet = UniqSet TyCoVar
- emptyVarSet :: VarSet
- unitVarSet :: Var -> VarSet
- mkVarSet :: [Var] -> VarSet
- extendVarSet :: VarSet -> Var -> VarSet
- extendVarSetList :: VarSet -> [Var] -> VarSet
- extendVarSet_C :: (Var -> Var -> Var) -> VarSet -> Var -> VarSet
- elemVarSet :: Var -> VarSet -> Bool
- varSetElems :: VarSet -> [Var]
- subVarSet :: VarSet -> VarSet -> Bool
- unionVarSet :: VarSet -> VarSet -> VarSet
- unionVarSets :: [VarSet] -> VarSet
- mapUnionVarSet :: (a -> VarSet) -> [a] -> VarSet
- intersectVarSet :: VarSet -> VarSet -> VarSet
- intersectsVarSet :: VarSet -> VarSet -> Bool
- disjointVarSet :: VarSet -> VarSet -> Bool
- isEmptyVarSet :: VarSet -> Bool
- delVarSet :: VarSet -> Var -> VarSet
- delVarSetList :: VarSet -> [Var] -> VarSet
- delVarSetByKey :: VarSet -> Unique -> VarSet
- minusVarSet :: VarSet -> VarSet -> VarSet
- foldVarSet :: (Var -> a -> a) -> a -> VarSet -> a
- filterVarSet :: (Var -> Bool) -> VarSet -> VarSet
- transCloVarSet :: (VarSet -> VarSet) -> VarSet -> VarSet
- fixVarSet :: (VarSet -> VarSet) -> VarSet -> VarSet
- lookupVarSet :: VarSet -> Var -> Maybe Var
- lookupVarSetByName :: VarSet -> Name -> Maybe Var
- mapVarSet :: (Var -> Var) -> VarSet -> VarSet
- sizeVarSet :: VarSet -> Int
- seqVarSet :: VarSet -> ()
- elemVarSetByKey :: Unique -> VarSet -> Bool
- partitionVarSet :: (Var -> Bool) -> VarSet -> (VarSet, VarSet)
- pluralVarSet :: VarSet -> SDoc
- pprVarSet :: ([Var] -> SDoc) -> VarSet -> SDoc
- type DVarSet = UniqDSet Var
- type DIdSet = UniqDSet Id
- type DTyVarSet = UniqDSet TyVar
- type DTyCoVarSet = UniqDSet TyCoVar
- emptyDVarSet :: DVarSet
- unitDVarSet :: Var -> DVarSet
- mkDVarSet :: [Var] -> DVarSet
- extendDVarSet :: DVarSet -> Var -> DVarSet
- extendDVarSetList :: DVarSet -> [Var] -> DVarSet
- elemDVarSet :: Var -> DVarSet -> Bool
- dVarSetElems :: DVarSet -> [Var]
- subDVarSet :: DVarSet -> DVarSet -> Bool
- unionDVarSet :: DVarSet -> DVarSet -> DVarSet
- unionDVarSets :: [DVarSet] -> DVarSet
- mapUnionDVarSet :: (a -> DVarSet) -> [a] -> DVarSet
- intersectDVarSet :: DVarSet -> DVarSet -> DVarSet
- intersectsDVarSet :: DVarSet -> DVarSet -> Bool
- disjointDVarSet :: DVarSet -> DVarSet -> Bool
- isEmptyDVarSet :: DVarSet -> Bool
- delDVarSet :: DVarSet -> Var -> DVarSet
- delDVarSetList :: DVarSet -> [Var] -> DVarSet
- minusDVarSet :: DVarSet -> DVarSet -> DVarSet
- foldDVarSet :: (Var -> a -> a) -> a -> DVarSet -> a
- filterDVarSet :: (Var -> Bool) -> DVarSet -> DVarSet
- dVarSetMinusVarSet :: DVarSet -> VarSet -> DVarSet
- transCloDVarSet :: (DVarSet -> DVarSet) -> DVarSet -> DVarSet
- sizeDVarSet :: DVarSet -> Int
- seqDVarSet :: DVarSet -> ()
- partitionDVarSet :: (Var -> Bool) -> DVarSet -> (DVarSet, DVarSet)
- dVarSetToVarSet :: DVarSet -> VarSet
Var, Id and TyVar set types
A non-deterministic set of variables. See Note [Deterministic UniqFM] in UniqDFM for explanation why it's not deterministic and why it matters. Use DVarSet if the set eventually gets converted into a list or folded over in a way where the order changes the generated code, for example when abstracting variables.
type TyCoVarSet = UniqSet TyCoVar #
Manipulating these sets
emptyVarSet :: VarSet #
unitVarSet :: Var -> VarSet #
extendVarSet :: VarSet -> Var -> VarSet #
extendVarSetList :: VarSet -> [Var] -> VarSet #
elemVarSet :: Var -> VarSet -> Bool #
varSetElems :: VarSet -> [Var] #
unionVarSet :: VarSet -> VarSet -> VarSet #
unionVarSets :: [VarSet] -> VarSet #
mapUnionVarSet :: (a -> VarSet) -> [a] -> VarSet #
map the function over the list, and union the results
intersectVarSet :: VarSet -> VarSet -> VarSet #
intersectsVarSet :: VarSet -> VarSet -> Bool #
disjointVarSet :: VarSet -> VarSet -> Bool #
isEmptyVarSet :: VarSet -> Bool #
delVarSetList :: VarSet -> [Var] -> VarSet #
delVarSetByKey :: VarSet -> Unique -> VarSet #
minusVarSet :: VarSet -> VarSet -> VarSet #
foldVarSet :: (Var -> a -> a) -> a -> VarSet -> a #
sizeVarSet :: VarSet -> Int #
elemVarSetByKey :: Unique -> VarSet -> Bool #
pluralVarSet :: VarSet -> SDoc #
Determines the pluralisation suffix appropriate for the length of a set in the same way that plural from Outputable does for lists.
:: ([Var] -> SDoc) | The pretty printing function to use on the elements |
-> VarSet | The things to be pretty printed |
-> SDoc |
|
Pretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with varSetElems.
Deterministic Var set types
type DTyCoVarSet = UniqDSet TyCoVar #
Manipulating these sets
emptyDVarSet :: DVarSet #
unitDVarSet :: Var -> DVarSet #
extendDVarSet :: DVarSet -> Var -> DVarSet #
extendDVarSetList :: DVarSet -> [Var] -> DVarSet #
Add a list of variables to DVarSet
elemDVarSet :: Var -> DVarSet -> Bool #
dVarSetElems :: DVarSet -> [Var] #
subDVarSet :: DVarSet -> DVarSet -> Bool #
unionDVarSet :: DVarSet -> DVarSet -> DVarSet #
unionDVarSets :: [DVarSet] -> DVarSet #
mapUnionDVarSet :: (a -> DVarSet) -> [a] -> DVarSet #
Map the function over the list, and union the results
intersectDVarSet :: DVarSet -> DVarSet -> DVarSet #
intersectsDVarSet :: DVarSet -> DVarSet -> Bool #
True if non-empty intersection
disjointDVarSet :: DVarSet -> DVarSet -> Bool #
True if empty intersection
isEmptyDVarSet :: DVarSet -> Bool #
delDVarSet :: DVarSet -> Var -> DVarSet #
delDVarSetList :: DVarSet -> [Var] -> DVarSet #
Delete a list of variables from DVarSet
minusDVarSet :: DVarSet -> DVarSet -> DVarSet #
foldDVarSet :: (Var -> a -> a) -> a -> DVarSet -> a #
dVarSetMinusVarSet :: DVarSet -> VarSet -> DVarSet #
sizeDVarSet :: DVarSet -> Int #
seqDVarSet :: DVarSet -> () #
partitionDVarSet :: (Var -> Bool) -> DVarSet -> (DVarSet, DVarSet) #
Partition DVarSet according to the predicate given
dVarSetToVarSet :: DVarSet -> VarSet #
Convert a DVarSet to a VarSet by forgeting the order of insertion