Lines Matching refs:NameSpace
38 module Data.NameSpaces (NameSpace, nameSpace, defGlobal, enterNewRange, leaveRange,
64 data NameSpace a = NameSpace (Map Ident a) -- defs in global range type
67 instance (Show a) => Show (NameSpace a) where
71 nameSpace :: NameSpace a
72 nameSpace = NameSpace Map.empty []
83 defGlobal :: NameSpace a -> Ident -> a -> (NameSpace a, Maybe a)
84 defGlobal (NameSpace gs lss) ide def =
85 (NameSpace (Map.insert ide def gs) lss,
90 enterNewRange :: NameSpace a -> NameSpace a
91 enterNewRange (NameSpace gs lss) = NameSpace gs ([]:lss)
95 leaveRange :: NameSpace a -> (NameSpace a, [(Ident, a)])
96 leaveRange (NameSpace _gs []) = interr "NameSpaces.leaveRange: \
98 leaveRange (NameSpace gs (ls:lss)) = (NameSpace gs lss, ls)
111 defLocal :: NameSpace a -> Ident -> a -> (NameSpace a, Maybe a)
112 defLocal ns@(NameSpace _ [] ) ide def = defGlobal ns ide def
113 defLocal (NameSpace gs (ls:lss)) ide def =
114 (NameSpace gs (((ide, def):ls):lss),
125 find :: NameSpace a -> Ident -> Maybe a
126 find (NameSpace gs lss) ide = case (lookup' lss) of
144 nameSpaceToList :: NameSpace a -> [(Ident, a)]
145 nameSpaceToList (NameSpace gs lss) = Map.toList gs ++ concat lss