case e of
ESkip => SM.empty
| ESet (ev, e) => SM.insert (SM.empty, ev, e)
- | EGet (x, ev, e) => exec' evs (Reduce.subst x (lookup (evs, ev)) e)
+ | EGet (x, _, ev, e) => exec' evs (Reduce.subst x (lookup (evs, ev)) e)
| ESeq es =>
let
val (new, _) =
| ELocal (e1, e2) =>
let
val evs' = exec' evs e1
- val evs'' = exec' (conjoin (evs, evs')) e2
in
- conjoin (evs, evs'')
+ exec' (conjoin (evs, evs')) e2
end
| EWith (e1, e2) =>
let
in
case Env.action prim of
NONE => raise Fail "Unbound primitive action"
- | SOME action => action (evs, args)
+ | SOME action => action (evs, List.map (Reduce.reduceExp Env.empty) args)
end
fun exec evs e =