Skip to content
This repository was archived by the owner on Apr 1, 2025. It is now read-only.

Commit becf320

Browse files
authored
Merge pull request #219 from github/re-name
Rename User to Name
2 parents f04a69a + fc2233f commit becf320

File tree

11 files changed

+113
-113
lines changed

11 files changed

+113
-113
lines changed

semantic-core/src/Analysis/Concrete.hs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ import Data.Traversable (for)
3434
import Prelude hiding (fail)
3535

3636
type Precise = Int
37-
type Env = Map.Map User Precise
37+
type Env = Map.Map Name Precise
3838

3939
newtype FrameId = FrameId { unFrameId :: Precise }
4040
deriving (Eq, Ord, Show)
4141

4242
data Concrete term
43-
= Closure Loc User term Env
43+
= Closure Loc Name term Env
4444
| Unit
4545
| Bool Bool
4646
| String Text
@@ -69,15 +69,15 @@ data Edge = Lexical | Import
6969
-- >>> map fileBody (snd (concrete eval [File (Loc "bool" emptySpan) (Core.bool True)]))
7070
-- [Right (Bool True)]
7171
concrete
72-
:: (Foldable term, Show (term User))
72+
:: (Foldable term, Show (term Name))
7373
=> (forall sig m
7474
. (Carrier sig m, Member (Reader Loc) sig, MonadFail m)
75-
=> Analysis (term User) Precise (Concrete (term User)) m
76-
-> (term User -> m (Concrete (term User)))
77-
-> (term User -> m (Concrete (term User)))
75+
=> Analysis (term Name) Precise (Concrete (term Name)) m
76+
-> (term Name -> m (Concrete (term Name)))
77+
-> (term Name -> m (Concrete (term Name)))
7878
)
79-
-> [File (term User)]
80-
-> (Heap (term User), [File (Either (Loc, String) (Concrete (term User)))])
79+
-> [File (term Name)]
80+
-> (Heap (term Name), [File (Either (Loc, String) (Concrete (term Name)))])
8181
concrete eval
8282
= run
8383
. runFresh
@@ -89,17 +89,17 @@ runFile
8989
, Effect sig
9090
, Foldable term
9191
, Member Fresh sig
92-
, Member (State (Heap (term User))) sig
93-
, Show (term User)
92+
, Member (State (Heap (term Name))) sig
93+
, Show (term Name)
9494
)
9595
=> (forall sig m
9696
. (Carrier sig m, Member (Reader Loc) sig, MonadFail m)
97-
=> Analysis (term User) Precise (Concrete (term User)) m
98-
-> (term User -> m (Concrete (term User)))
99-
-> (term User -> m (Concrete (term User)))
97+
=> Analysis (term Name) Precise (Concrete (term Name)) m
98+
-> (term Name -> m (Concrete (term Name)))
99+
-> (term Name -> m (Concrete (term Name)))
100100
)
101-
-> File (term User)
102-
-> m (File (Either (Loc, String) (Concrete (term User))))
101+
-> File (term Name)
102+
-> m (File (Either (Loc, String) (Concrete (term Name))))
103103
runFile eval file = traverse run file
104104
where run = runReader (fileLoc file)
105105
. runFailWithLoc
@@ -111,11 +111,11 @@ concreteAnalysis :: ( Carrier sig m
111111
, Member Fresh sig
112112
, Member (Reader Env) sig
113113
, Member (Reader Loc) sig
114-
, Member (State (Heap (term User))) sig
114+
, Member (State (Heap (term Name))) sig
115115
, MonadFail m
116-
, Show (term User)
116+
, Show (term Name)
117117
)
118-
=> Analysis (term User) Precise (Concrete (term User)) m
118+
=> Analysis (term Name) Precise (Concrete (term Name)) m
119119
concreteAnalysis = Analysis{..}
120120
where alloc _ = fresh
121121
bind name addr m = local (Map.insert name addr) m
@@ -151,7 +151,7 @@ concreteAnalysis = Analysis{..}
151151
pure (val >>= lookupConcrete heap n)
152152

153153

154-
lookupConcrete :: Heap term -> User -> Concrete term -> Maybe Precise
154+
lookupConcrete :: Heap term -> Name -> Concrete term -> Maybe Precise
155155
lookupConcrete heap name = run . evalState IntSet.empty . runNonDet . inConcrete
156156
where -- look up the name in a concrete value
157157
inConcrete = inFrame <=< maybeA . recordFrame
@@ -177,7 +177,7 @@ runHeap = runState mempty
177177
-- > λ let (heap, res) = concrete [ruby]
178178
-- > λ writeFile "/Users/rob/Desktop/heap.dot" (export (addressStyle heap) (heapAddressGraph heap))
179179
-- > λ :!dot -Tsvg < ~/Desktop/heap.dot > ~/Desktop/heap.svg
180-
heapGraph :: (Precise -> Concrete term -> a) -> (Either Edge User -> Precise -> G.Graph a) -> Heap term -> G.Graph a
180+
heapGraph :: (Precise -> Concrete term -> a) -> (Either Edge Name -> Precise -> G.Graph a) -> Heap term -> G.Graph a
181181
heapGraph vertex edge h = foldr (uncurry graph) G.empty (IntMap.toList h)
182182
where graph k v rest = (G.vertex (vertex k v) `G.connect` outgoing v) `G.overlay` rest
183183
outgoing = \case
@@ -211,7 +211,7 @@ addressStyle heap = (G.defaultStyle vertex) { G.edgeAttributes }
211211

212212
data EdgeType term
213213
= Edge Edge
214-
| Slot User
214+
| Slot Name
215215
| Value (Concrete term)
216216
deriving (Eq, Ord, Show)
217217

semantic-core/src/Analysis/Eval.hs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ eval :: ( Carrier sig m
3333
, MonadFail m
3434
, Semigroup value
3535
)
36-
=> Analysis (Term (Ann :+: Core) User) address value m
37-
-> (Term (Ann :+: Core) User -> m value)
38-
-> (Term (Ann :+: Core) User -> m value)
36+
=> Analysis (Term (Ann :+: Core) Name) address value m
37+
-> (Term (Ann :+: Core) Name -> m value)
38+
-> (Term (Ann :+: Core) Name -> m value)
3939
eval Analysis{..} eval = \case
4040
Var n -> lookupEnv' n >>= deref' n
4141
Term (R c) -> case c of
@@ -93,30 +93,30 @@ eval Analysis{..} eval = \case
9393
Term (L (Ann loc c)) -> local (const loc) (ref c)
9494

9595

96-
prog1 :: (Carrier sig t, Member Core sig) => File (t User)
96+
prog1 :: (Carrier sig t, Member Core sig) => File (t Name)
9797
prog1 = fromBody $ lam (named' "foo")
9898
( named' "bar" :<- pure "foo"
9999
>>>= Core.if' (pure "bar")
100100
(Core.bool False)
101101
(Core.bool True))
102102

103-
prog2 :: (Carrier sig t, Member Core sig) => File (t User)
103+
prog2 :: (Carrier sig t, Member Core sig) => File (t Name)
104104
prog2 = fromBody $ fileBody prog1 $$ Core.bool True
105105

106-
prog3 :: (Carrier sig t, Member Core sig) => File (t User)
106+
prog3 :: (Carrier sig t, Member Core sig) => File (t Name)
107107
prog3 = fromBody $ lams [named' "foo", named' "bar", named' "quux"]
108108
(Core.if' (pure "quux")
109109
(pure "bar")
110110
(pure "foo"))
111111

112-
prog4 :: (Carrier sig t, Member Core sig) => File (t User)
112+
prog4 :: (Carrier sig t, Member Core sig) => File (t Name)
113113
prog4 = fromBody
114114
( named' "foo" :<- Core.bool True
115115
>>>= Core.if' (pure "foo")
116116
(Core.bool True)
117117
(Core.bool False))
118118

119-
prog5 :: (Carrier sig t, Member Ann sig, Member Core sig) => File (t User)
119+
prog5 :: (Carrier sig t, Member Ann sig, Member Core sig) => File (t Name)
120120
prog5 = fromBody $ ann (do'
121121
[ Just (named' "mkPoint") :<- lams [named' "_x", named' "_y"] (ann (Core.record
122122
[ ("x", ann (pure "_x"))
@@ -127,7 +127,7 @@ prog5 = fromBody $ ann (do'
127127
, Nothing :<- ann (ann (pure "point") Core.... "y") .= ann (ann (pure "point") Core.... "x")
128128
])
129129

130-
prog6 :: (Carrier sig t, Member Core sig) => [File (t User)]
130+
prog6 :: (Carrier sig t, Member Core sig) => [File (t Name)]
131131
prog6 =
132132
[ File (Loc "dep" (locSpan (fromJust here))) $ Core.record
133133
[ ("dep", Core.record [ ("var", Core.bool True) ]) ]
@@ -137,7 +137,7 @@ prog6 =
137137
])
138138
]
139139

140-
ruby :: (Carrier sig t, Member Ann sig, Member Core sig) => File (t User)
140+
ruby :: (Carrier sig t, Member Ann sig, Member Core sig) => File (t Name)
141141
ruby = fromBody $ annWith callStack (rec (named' __semantic_global) (do' statements))
142142
where statements =
143143
[ Just "Class" :<- record
@@ -215,18 +215,18 @@ ruby = fromBody $ annWith callStack (rec (named' __semantic_global) (do' stateme
215215

216216

217217
data Analysis term address value m = Analysis
218-
{ alloc :: User -> m address
219-
, bind :: forall a . User -> address -> m a -> m a
220-
, lookupEnv :: User -> m (Maybe address)
218+
{ alloc :: Name -> m address
219+
, bind :: forall a . Name -> address -> m a -> m a
220+
, lookupEnv :: Name -> m (Maybe address)
221221
, deref :: address -> m (Maybe value)
222222
, assign :: address -> value -> m ()
223-
, abstract :: (term -> m value) -> User -> term -> m value
223+
, abstract :: (term -> m value) -> Name -> term -> m value
224224
, apply :: (term -> m value) -> value -> value -> m value
225225
, unit :: m value
226226
, bool :: Bool -> m value
227227
, asBool :: value -> m Bool
228228
, string :: Text -> m value
229229
, asString :: value -> m Text
230-
, record :: [(User, value)] -> m value
231-
, (...) :: address -> User -> m (Maybe address)
230+
, record :: [(Name, value)] -> m value
231+
, (...) :: address -> Name -> m (Maybe address)
232232
}

semantic-core/src/Analysis/ImportGraph.hs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ instance Monoid (Value term) where
4141
mempty = Value Abstract mempty
4242

4343
data Semi term
44-
= Closure Loc User term
44+
= Closure Loc Name term
4545
-- FIXME: Bound String values.
4646
| String Text
4747
| Abstract
@@ -52,12 +52,12 @@ importGraph
5252
:: (Ord term, Show term)
5353
=> (forall sig m
5454
. (Carrier sig m, Member (Reader Loc) sig, MonadFail m)
55-
=> Analysis term User (Value term) m
55+
=> Analysis term Name (Value term) m
5656
-> (term -> m (Value term))
5757
-> (term -> m (Value term))
5858
)
5959
-> [File term]
60-
-> ( Heap User (Value term)
60+
-> ( Heap Name (Value term)
6161
, [File (Either (Loc, String) (Value term))]
6262
)
6363
importGraph eval
@@ -70,13 +70,13 @@ runFile
7070
:: ( Carrier sig m
7171
, Effect sig
7272
, Member Fresh sig
73-
, Member (State (Heap User (Value term))) sig
73+
, Member (State (Heap Name (Value term))) sig
7474
, Ord term
7575
, Show term
7676
)
7777
=> (forall sig m
7878
. (Carrier sig m, Member (Reader Loc) sig, MonadFail m)
79-
=> Analysis term User (Value term) m
79+
=> Analysis term Name (Value term) m
8080
-> (term -> m (Value term))
8181
-> (term -> m (Value term))
8282
)
@@ -86,18 +86,18 @@ runFile eval file = traverse run file
8686
where run = runReader (fileLoc file)
8787
. runFailWithLoc
8888
. fmap fold
89-
. convergeTerm (Proxy @User) (fix (cacheTerm . eval importGraphAnalysis))
89+
. convergeTerm (Proxy @Name) (fix (cacheTerm . eval importGraphAnalysis))
9090

9191
-- FIXME: decompose into a product domain and two atomic domains
9292
importGraphAnalysis :: ( Alternative m
9393
, Carrier sig m
9494
, Member (Reader Loc) sig
95-
, Member (State (Heap User (Value term))) sig
95+
, Member (State (Heap Name (Value term))) sig
9696
, MonadFail m
9797
, Ord term
9898
, Show term
9999
)
100-
=> Analysis term User (Value term) m
100+
=> Analysis term Name (Value term) m
101101
importGraphAnalysis = Analysis{..}
102102
where alloc = pure
103103
bind _ _ m = m

semantic-core/src/Analysis/ScopeGraph.hs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ scopeGraph
5050
:: Ord term
5151
=> (forall sig m
5252
. (Carrier sig m, Member (Reader Loc) sig, MonadFail m)
53-
=> Analysis term User ScopeGraph m
53+
=> Analysis term Name ScopeGraph m
5454
-> (term -> m ScopeGraph)
5555
-> (term -> m ScopeGraph)
5656
)
5757
-> [File term]
58-
-> (Heap User ScopeGraph, [File (Either (Loc, String) ScopeGraph)])
58+
-> (Heap Name ScopeGraph, [File (Either (Loc, String) ScopeGraph)])
5959
scopeGraph eval
6060
= run
6161
. runFresh
@@ -66,32 +66,32 @@ runFile
6666
:: ( Carrier sig m
6767
, Effect sig
6868
, Member Fresh sig
69-
, Member (State (Heap User ScopeGraph)) sig
69+
, Member (State (Heap Name ScopeGraph)) sig
7070
, Ord term
7171
)
7272
=> (forall sig m
7373
. (Carrier sig m, Member (Reader Loc) sig, MonadFail m)
74-
=> Analysis term User ScopeGraph m
74+
=> Analysis term Name ScopeGraph m
7575
-> (term -> m ScopeGraph)
7676
-> (term -> m ScopeGraph)
7777
)
7878
-> File term
7979
-> m (File (Either (Loc, String) ScopeGraph))
8080
runFile eval file = traverse run file
8181
where run = runReader (fileLoc file)
82-
. runReader (Map.empty @User @Loc)
82+
. runReader (Map.empty @Name @Loc)
8383
. runFailWithLoc
8484
. fmap fold
85-
. convergeTerm (Proxy @User) (fix (cacheTerm . eval scopeGraphAnalysis))
85+
. convergeTerm (Proxy @Name) (fix (cacheTerm . eval scopeGraphAnalysis))
8686

8787
scopeGraphAnalysis
8888
:: ( Alternative m
8989
, Carrier sig m
9090
, Member (Reader Loc) sig
91-
, Member (Reader (Map.Map User Loc)) sig
92-
, Member (State (Heap User ScopeGraph)) sig
91+
, Member (Reader (Map.Map Name Loc)) sig
92+
, Member (State (Heap Name ScopeGraph)) sig
9393
)
94-
=> Analysis term User ScopeGraph m
94+
=> Analysis term Name ScopeGraph m
9595
scopeGraphAnalysis = Analysis{..}
9696
where alloc = pure
9797
bind name _ m = do

semantic-core/src/Analysis/Typecheck.hs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ data Monotype f a
4343
| Unit
4444
| String
4545
| Arr (f a) (f a)
46-
| Record (Map.Map User (f a))
46+
| Record (Map.Map Name (f a))
4747
deriving (Foldable, Functor, Generic1, Traversable)
4848

4949
type Type = Term Monotype Meta
@@ -95,12 +95,12 @@ typecheckingFlowInsensitive
9595
:: Ord term
9696
=> (forall sig m
9797
. (Carrier sig m, Member (Reader Loc) sig, MonadFail m)
98-
=> Analysis term User Type m
98+
=> Analysis term Name Type m
9999
-> (term -> m Type)
100100
-> (term -> m Type)
101101
)
102102
-> [File term]
103-
-> ( Heap User Type
103+
-> ( Heap Name Type
104104
, [File (Either (Loc, String) (Term (Polytype :+: Monotype) Void))]
105105
)
106106
typecheckingFlowInsensitive eval
@@ -114,12 +114,12 @@ runFile
114114
:: ( Carrier sig m
115115
, Effect sig
116116
, Member Fresh sig
117-
, Member (State (Heap User Type)) sig
117+
, Member (State (Heap Name Type)) sig
118118
, Ord term
119119
)
120120
=> (forall sig m
121121
. (Carrier sig m, Member (Reader Loc) sig, MonadFail m)
122-
=> Analysis term User Type m
122+
=> Analysis term Name Type m
123123
-> (term -> m Type)
124124
-> (term -> m Type)
125125
)
@@ -129,7 +129,7 @@ runFile eval file = traverse run file
129129
where run
130130
= (\ m -> do
131131
(subst, t) <- m
132-
modify @(Heap User Type) (fmap (Set.map (substAll subst)))
132+
modify @(Heap Name Type) (fmap (Set.map (substAll subst)))
133133
pure (substAll subst <$> t))
134134
. runState (mempty :: Substitution)
135135
. runReader (fileLoc file)
@@ -142,16 +142,16 @@ runFile eval file = traverse run file
142142
v <- meta
143143
bs <- m
144144
v <$ for_ bs (unify v))
145-
. convergeTerm (Proxy @User) (fix (cacheTerm . eval typecheckingAnalysis))
145+
. convergeTerm (Proxy @Name) (fix (cacheTerm . eval typecheckingAnalysis))
146146

147147
typecheckingAnalysis
148148
:: ( Alternative m
149149
, Carrier sig m
150150
, Member Fresh sig
151151
, Member (State (Set.Set Constraint)) sig
152-
, Member (State (Heap User Type)) sig
152+
, Member (State (Heap Name Type)) sig
153153
)
154-
=> Analysis term User Type m
154+
=> Analysis term Name Type m
155155
typecheckingAnalysis = Analysis{..}
156156
where alloc = pure
157157
bind _ _ m = m

0 commit comments

Comments
 (0)