2 % (c) The GRASP/AQUA Project, Glasgow University, 1998
4 \section[NameSet]{@NameSets@}
10 emptyNameSet, unitNameSet, mkNameSet, unionNameSets, unionManyNameSets,
11 minusNameSet, elemNameSet, nameSetToList, addOneToNameSet, addListToNameSet,
12 delFromNameSet, delListFromNameSet, isEmptyNameSet, foldNameSet, filterNameSet,
15 FreeVars, isEmptyFVs, emptyFVs, plusFVs, plusFV,
16 mkFVs, addOneFV, unitFV, delFV, delFVs
19 #include "HsVersions.h"
26 %************************************************************************
28 \subsection[Sets of names}
30 %************************************************************************
33 type NameSet = UniqSet Name
34 emptyNameSet :: NameSet
35 unitNameSet :: Name -> NameSet
36 addListToNameSet :: NameSet -> [Name] -> NameSet
37 addOneToNameSet :: NameSet -> Name -> NameSet
38 mkNameSet :: [Name] -> NameSet
39 unionNameSets :: NameSet -> NameSet -> NameSet
40 unionManyNameSets :: [NameSet] -> NameSet
41 minusNameSet :: NameSet -> NameSet -> NameSet
42 elemNameSet :: Name -> NameSet -> Bool
43 nameSetToList :: NameSet -> [Name]
44 isEmptyNameSet :: NameSet -> Bool
45 delFromNameSet :: NameSet -> Name -> NameSet
46 delListFromNameSet :: NameSet -> [Name] -> NameSet
47 foldNameSet :: (Name -> b -> b) -> b -> NameSet -> b
48 filterNameSet :: (Name -> Bool) -> NameSet -> NameSet
50 isEmptyNameSet = isEmptyUniqSet
51 emptyNameSet = emptyUniqSet
52 unitNameSet = unitUniqSet
54 addListToNameSet = addListToUniqSet
55 addOneToNameSet = addOneToUniqSet
56 unionNameSets = unionUniqSets
57 unionManyNameSets = unionManyUniqSets
58 minusNameSet = minusUniqSet
59 elemNameSet = elementOfUniqSet
60 nameSetToList = uniqSetToList
61 delFromNameSet = delOneFromUniqSet
62 foldNameSet = foldUniqSet
63 filterNameSet = filterUniqSet
65 delListFromNameSet set ns = foldl delFromNameSet set ns
69 %************************************************************************
71 \subsection{Free variables}
73 %************************************************************************
75 These synonyms are useful when we are thinking of free variables
78 type FreeVars = NameSet
80 plusFV :: FreeVars -> FreeVars -> FreeVars
81 addOneFV :: FreeVars -> Name -> FreeVars
82 unitFV :: Name -> FreeVars
84 plusFVs :: [FreeVars] -> FreeVars
85 mkFVs :: [Name] -> FreeVars
86 delFV :: Name -> FreeVars -> FreeVars
87 delFVs :: [Name] -> FreeVars -> FreeVars
89 isEmptyFVs = isEmptyNameSet
90 emptyFVs = emptyNameSet
91 plusFVs = unionManyNameSets
92 plusFV = unionNameSets
94 addOneFV = addOneToNameSet
96 delFV n s = delFromNameSet s n
97 delFVs ns s = delListFromNameSet s ns