@@ -32,7 +32,8 @@ newtype State s :: Effect where
3232runState :: s -> Eff (State s : es) a -> Eff es (a, s)
3333runState s m = do
3434 v <- unsafeEff_ $ newMVar s
35− evalEffect (IdE (State v)) $ (,) <$> m <*> get
35+ a <- evalEffect (IdE (State v)) m
36+ (a, ) <$> unsafeEff_ (readMVar v)
3637
3738evalState :: s -> Eff (State s : es) a -> Eff es a
3839evalState s m = do
@@ -42,7 +43,8 @@ evalState s m = do
4243execState :: s -> Eff (State s : es) a -> Eff es s
4344execState s m = do
4445 v <- unsafeEff_ $ newMVar s
45− evalEffect (IdE (State v)) $ m *> get
46+ _ <- evalEffect (IdE (State v)) m
47+ unsafeEff_ $ readMVar v
4648
4749get :: State s :> es => Eff es s
4850get = do