@@ -32,7 +32,8 @@ newtype State s :: Effect where
32runState :: s -> Eff (State s : es) a -> Eff es (a, s)
32runState :: s -> Eff (State s : es) a -> Eff es (a, s)
33runState s m = do
33runState s m = do
34 v <- unsafeEff_ $ newMVar s
34 v <- unsafeEff_ $ newMVar s
35− evalEffect (IdE (State v)) $ (,) <$> m <*> get
35+ a <- evalEffect (IdE (State v)) m
36+ (a, ) <$> unsafeEff_ (readMVar v)
37evalState :: s -> Eff (State s : es) a -> Eff es a
38evalState :: s -> Eff (State s : es) a -> Eff es a
38evalState s m = do
39evalState s m = do
@@ -42,7 +43,8 @@ evalState s m = do
42execState :: s -> Eff (State s : es) a -> Eff es s
43execState :: s -> Eff (State s : es) a -> Eff es s
43execState s m = do
44execState s m = do
44 v <- unsafeEff_ $ newMVar s
45 v <- unsafeEff_ $ newMVar s
45− evalEffect (IdE (State v)) $ m *> get
46+ _ <- evalEffect (IdE (State v)) m
47+ unsafeEff_ $ readMVar v
47get :: State s :> es => Eff es s
49get :: State s :> es => Eff es s