@@ -1,46 +0,0 @@
1−{-# LANGUAGE UndecidableInstances #-}
2−module Effectful.Class.State where
4−import Control.Monad.Trans.Class
6−import Effectful.Internal.Effect
7−import Effectful.Internal.Monad
8−import qualified Effectful.State as S
10−-- | Compatiblity layer for a transition period from MTL-style effect handling
11−-- to 'Effectful.Eff'.
12−class Monad m => MonadState s m where
13− {-# MINIMAL state | get, put #-}
16− get = state (\s -> (s, s))
19− put s = state (\_ -> ((), s))
21− state :: (s -> (a, s)) -> m a
27−-- | Generic, overlappable instance.
28−instance {-# OVERLAPPABLE #-}
32− ) => MonadState s (t m) where
37−instance S.State s :> es => MonadState s (Eff es) where
42−gets :: MonadState s m => (s -> a) -> m a
45−modify :: MonadState s m => (s -> s) -> m ()
46−modify f = state (\s -> ((), f s))