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

Commit b9ba190

Browse files
committed
Port eval over.
1 parent fecfa07 commit b9ba190

1 file changed

Lines changed: 15 additions & 15 deletions

File tree

  • semantic-analysis/src/Analysis/Syntax

semantic-analysis/src/Analysis/Syntax/Python.hs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -149,35 +149,35 @@ pattern Locate'' s t = Locate' s T.:$: T.Cons t T.Nil
149149

150150
-- Abstract interpretation
151151

152-
eval0 :: (Has (Env addr) sig m, HasLabelled Store (Store addr val) sig m, Has (Dom val) sig m, Has (Reader Reference) sig m, Has S.Statement sig m) => Term -> m val
152+
eval0 :: (Has (Env addr) sig m, HasLabelled Store (Store addr val) sig m, Has (Dom val) sig m, Has (Reader Reference) sig m, Has S.Statement sig m) => T.Term Python Name -> m val
153153
eval0 = fix eval
154154

155155
eval
156156
:: (Has (Env addr) sig m, HasLabelled Store (Store addr val) sig m, Has (Dom val) sig m, Has (Reader Reference) sig m, Has S.Statement sig m)
157-
=> (Term -> m val)
158-
-> (Term -> m val)
157+
=> (T.Term Python Name -> m val)
158+
-> (T.Term Python Name -> m val)
159159
eval eval = \case
160-
Var n -> lookupEnv n >>= maybe (dvar n) fetch
161-
Noop -> dunit
162-
Iff c t e -> do
160+
T.Var n -> lookupEnv n >>= maybe (dvar n) fetch
161+
Noop'' -> dunit
162+
Iff'' c t e -> do
163163
c' <- eval c
164164
dif c' (eval t) (eval e)
165-
Bool b -> dbool b
166-
String s -> dstring s
167-
Throw e -> eval e >>= ddie
168-
Let n v b -> do
165+
Bool'' b -> dbool b
166+
String'' s -> dstring s
167+
Throw'' e -> eval e >>= ddie
168+
Let'' n v b -> do
169169
v' <- eval v
170170
let' n v' (eval b)
171-
t :>> u -> do
171+
t :>>>> u -> do
172172
t' <- eval t
173173
u' <- eval u
174174
t' >>> u'
175-
Import ns -> S.simport ns >> dunit
176-
Function n ps b -> letrec n (dabs ps (foldr (\ (p, a) m -> let' p a m) (eval b) . zip ps))
177-
Call f as -> do
175+
Import'' ns -> S.simport ns >> dunit
176+
Function'' n ps b -> letrec n (dabs ps (foldr (\ (p, a) m -> let' p a m) (eval b) . zip ps))
177+
Call'' f as -> do
178178
f' <- eval f
179179
as' <- traverse eval as
180180
dapp f' as'
181-
Locate s t -> local (setSpan s) (eval t)
181+
Locate'' s t -> local (setSpan s) (eval t)
182182
where
183183
setSpan s r = r{ refSpan = s }

0 commit comments

Comments
 (0)