[project @ 2000-10-03 08:43:00 by simonpj]
[ghc-hetmet.git] / ghc / compiler / basicTypes / NameSet.lhs
1 %
2 % (c) The GRASP/AQUA Project, Glasgow University, 1998
3 %
4 \section[NameSet]{@NameSets@} 
5
6 \begin{code}
7 module NameSet (
8         -- Sets of Names
9         NameSet,
10         emptyNameSet, unitNameSet, mkNameSet, unionNameSets, unionManyNameSets,
11         minusNameSet, elemNameSet, nameSetToList, addOneToNameSet, addListToNameSet, 
12         delFromNameSet, delListFromNameSet, isEmptyNameSet, foldNameSet, filterNameSet
13     ) where
14
15 #include "HsVersions.h"
16
17 import Name
18 import UniqSet
19 \end{code}
20
21
22 %************************************************************************
23 %*                                                                      *
24 \subsection[Sets of names}
25 %*                                                                      *
26 %************************************************************************
27
28 \begin{code}
29 type NameSet = UniqSet Name
30 emptyNameSet       :: NameSet
31 unitNameSet        :: Name -> NameSet
32 addListToNameSet   :: NameSet -> [Name] -> NameSet
33 addOneToNameSet    :: NameSet -> Name -> NameSet
34 mkNameSet          :: [Name] -> NameSet
35 unionNameSets      :: NameSet -> NameSet -> NameSet
36 unionManyNameSets  :: [NameSet] -> NameSet
37 minusNameSet       :: NameSet -> NameSet -> NameSet
38 elemNameSet        :: Name -> NameSet -> Bool
39 nameSetToList      :: NameSet -> [Name]
40 isEmptyNameSet     :: NameSet -> Bool
41 delFromNameSet     :: NameSet -> Name -> NameSet
42 delListFromNameSet :: NameSet -> [Name] -> NameSet
43 foldNameSet        :: (Name -> b -> b) -> b -> NameSet -> b
44 filterNameSet      :: (Name -> Bool) -> NameSet -> NameSet
45
46 isEmptyNameSet    = isEmptyUniqSet
47 emptyNameSet      = emptyUniqSet
48 unitNameSet       = unitUniqSet
49 mkNameSet         = mkUniqSet
50 addListToNameSet  = addListToUniqSet
51 addOneToNameSet   = addOneToUniqSet
52 unionNameSets     = unionUniqSets
53 unionManyNameSets = unionManyUniqSets
54 minusNameSet      = minusUniqSet
55 elemNameSet       = elementOfUniqSet
56 nameSetToList     = uniqSetToList
57 delFromNameSet    = delOneFromUniqSet
58 foldNameSet       = foldUniqSet
59 filterNameSet     = filterUniqSet
60
61 delListFromNameSet set ns = foldl delFromNameSet set ns
62 \end{code}
63
64