module Control.Monad.Trans.Has.State ( module Control.Monad.Trans.Has.State , module X ) where import "transformers" Control.Monad.Trans.State.Strict qualified as State import "transformers" Control.Monad.Trans.State.Strict as X (StateT(..)) import "this" Control.Monad.Trans.Has type HasState s m = Has (StateT s) m get :: HasState s m => m s get :: m s get = (forall (n :: * -> *). Monad n => StateT s n s) -> m s forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. Has t m => (forall (n :: * -> *). Monad n => t n a) -> m a liftH forall (n :: * -> *). Monad n => StateT s n s forall (m :: * -> *) s. Monad m => StateT s m s State.get put :: HasState s m => s -> m () put :: s -> m () put s s = (forall (n :: * -> *). Monad n => StateT s n ()) -> m () forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. Has t m => (forall (n :: * -> *). Monad n => t n a) -> m a liftH ((forall (n :: * -> *). Monad n => StateT s n ()) -> m ()) -> (forall (n :: * -> *). Monad n => StateT s n ()) -> m () forall a b. (a -> b) -> a -> b $ s -> StateT s n () forall (m :: * -> *) s. Monad m => s -> StateT s m () State.put s s