{-# LANGUAGE CPP #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE UndecidableInstances #-}
module Control.Monad.State.Class (
MonadState(..),
modify,
modify',
gets
) where
import Control.Monad.Trans.Cont
import Control.Monad.Trans.Error
import Control.Monad.Trans.Except
import Control.Monad.Trans.Identity
import Control.Monad.Trans.List
import Control.Monad.Trans.Maybe
import Control.Monad.Trans.Reader
import qualified Control.Monad.Trans.RWS.Lazy as LazyRWS (RWST, get, put, state)
import qualified Control.Monad.Trans.RWS.Strict as StrictRWS (RWST, get, put, state)
import qualified Control.Monad.Trans.State.Lazy as Lazy (StateT, get, put, state)
import qualified Control.Monad.Trans.State.Strict as Strict (StateT, get, put, state)
import Control.Monad.Trans.Writer.Lazy as Lazy
import Control.Monad.Trans.Writer.Strict as Strict
import Control.Monad.Trans.Class (lift)
import Control.Monad
import Data.Monoid
class Monad m => MonadState s m | m -> s where
get :: m s
get = (s -> (s, s)) -> m s
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state (\s
s -> (s
s, s
s))
put :: s -> m ()
put s
s = (s -> ((), s)) -> m ()
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state (\s
_ -> ((), s
s))
state :: (s -> (a, s)) -> m a
state s -> (a, s)
f = do
s
s <- m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
let ~(a
a, s
s') = s -> (a, s)
f s
s
s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put s
s'
a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
return a
a
#if __GLASGOW_HASKELL__ >= 707
{-# MINIMAL state | get, put #-}
#endif
modify :: MonadState s m => (s -> s) -> m ()
modify :: (s -> s) -> m ()
modify s -> s
f = (s -> ((), s)) -> m ()
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state (\s
s -> ((), s -> s
f s
s))
modify' :: MonadState s m => (s -> s) -> m ()
modify' :: (s -> s) -> m ()
modify' s -> s
f = do
s
s' <- m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put (s -> m ()) -> s -> m ()
forall a b. (a -> b) -> a -> b
$! s -> s
f s
s'
gets :: MonadState s m => (s -> a) -> m a
gets :: (s -> a) -> m a
gets s -> a
f = do
s
s <- m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
return (s -> a
f s
s)
instance Monad m => MonadState s (Lazy.StateT s m) where
get :: StateT s m s
get = StateT s m s
forall (m :: * -> *) s. Monad m => StateT s m s
Evidence bound by a type signature of the constraint type Monad m
Lazy.get
put :: s -> StateT s m ()
put = s -> StateT s m ()
forall (m :: * -> *) s. Monad m => s -> StateT s m ()
Evidence bound by a type signature of the constraint type Monad m
Lazy.put
state :: (s -> (a, s)) -> StateT s m a
state = (s -> (a, s)) -> StateT s m a
forall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m a
Evidence bound by a type signature of the constraint type Monad m
Lazy.state
instance Monad m => MonadState s (Strict.StateT s m) where
get :: StateT s m s
get = StateT s m s
forall (m :: * -> *) s. Monad m => StateT s m s
Evidence bound by a type signature of the constraint type Monad m
Strict.get
put :: s -> StateT s m ()
put = s -> StateT s m ()
forall (m :: * -> *) s. Monad m => s -> StateT s m ()
Evidence bound by a type signature of the constraint type Monad m
Strict.put
state :: (s -> (a, s)) -> StateT s m a
state = (s -> (a, s)) -> StateT s m a
forall (m :: * -> *) s a. Monad m => (s -> (a, s)) -> StateT s m a
Evidence bound by a type signature of the constraint type Monad m
Strict.state
instance (Monad m, Monoid w) => MonadState s (LazyRWS.RWST r w s m) where
get :: RWST r w s m s
get = RWST r w s m s
forall w (m :: * -> *) r s. (Monoid w, Monad m) => RWST r w s m s
Evidence bound by a type signature of the constraint type Monad m
Evidence bound by a type signature of the constraint type Monoid w
LazyRWS.get
put :: s -> RWST r w s m ()
put = s -> RWST r w s m ()
forall w (m :: * -> *) s r.
(Monoid w, Monad m) =>
s -> RWST r w s m ()
Evidence bound by a type signature of the constraint type Monad m
Evidence bound by a type signature of the constraint type Monoid w
LazyRWS.put
state :: (s -> (a, s)) -> RWST r w s m a
state = (s -> (a, s)) -> RWST r w s m a
forall w (m :: * -> *) s a r.
(Monoid w, Monad m) =>
(s -> (a, s)) -> RWST r w s m a
Evidence bound by a type signature of the constraint type Monad m
Evidence bound by a type signature of the constraint type Monoid w
LazyRWS.state
instance (Monad m, Monoid w) => MonadState s (StrictRWS.RWST r w s m) where
get :: RWST r w s m s
get = RWST r w s m s
forall w (m :: * -> *) r s. (Monoid w, Monad m) => RWST r w s m s
Evidence bound by a type signature of the constraint type Monad m
Evidence bound by a type signature of the constraint type Monoid w
StrictRWS.get
put :: s -> RWST r w s m ()
put = s -> RWST r w s m ()
forall w (m :: * -> *) s r.
(Monoid w, Monad m) =>
s -> RWST r w s m ()
Evidence bound by a type signature of the constraint type Monad m
Evidence bound by a type signature of the constraint type Monoid w
StrictRWS.put
state :: (s -> (a, s)) -> RWST r w s m a
state = (s -> (a, s)) -> RWST r w s m a
forall w (m :: * -> *) s a r.
(Monoid w, Monad m) =>
(s -> (a, s)) -> RWST r w s m a
Evidence bound by a type signature of the constraint type Monad m
Evidence bound by a type signature of the constraint type Monoid w
StrictRWS.state
instance MonadState s m => MonadState s (ContT r m) where
get :: ContT r m s
get = m s -> ContT r m s
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall r. MonadTrans (ContT r)
lift m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
put :: s -> ContT r m ()
put = m () -> ContT r m ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall r. MonadTrans (ContT r)
lift (m () -> ContT r m ()) -> (s -> m ()) -> s -> ContT r m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put
state :: (s -> (a, s)) -> ContT r m a
state = m a -> ContT r m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall r. MonadTrans (ContT r)
lift (m a -> ContT r m a)
-> ((s -> (a, s)) -> m a) -> (s -> (a, s)) -> ContT r m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (s -> (a, s)) -> m a
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state
instance (Error e, MonadState s m) => MonadState s (ErrorT e m) where
get :: ErrorT e m s
get = m s -> ErrorT e m s
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall e. MonadTrans (ErrorT e)
lift m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
put :: s -> ErrorT e m ()
put = m () -> ErrorT e m ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall e. MonadTrans (ErrorT e)
lift (m () -> ErrorT e m ()) -> (s -> m ()) -> s -> ErrorT e m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put
state :: (s -> (a, s)) -> ErrorT e m a
state = m a -> ErrorT e m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall e. MonadTrans (ErrorT e)
lift (m a -> ErrorT e m a)
-> ((s -> (a, s)) -> m a) -> (s -> (a, s)) -> ErrorT e m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (s -> (a, s)) -> m a
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state
instance MonadState s m => MonadState s (ExceptT e m) where
get :: ExceptT e m s
get = m s -> ExceptT e m s
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall e. MonadTrans (ExceptT e)
lift m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
put :: s -> ExceptT e m ()
put = m () -> ExceptT e m ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall e. MonadTrans (ExceptT e)
lift (m () -> ExceptT e m ()) -> (s -> m ()) -> s -> ExceptT e m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put
state :: (s -> (a, s)) -> ExceptT e m a
state = m a -> ExceptT e m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall e. MonadTrans (ExceptT e)
lift (m a -> ExceptT e m a)
-> ((s -> (a, s)) -> m a) -> (s -> (a, s)) -> ExceptT e m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (s -> (a, s)) -> m a
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state
instance MonadState s m => MonadState s (IdentityT m) where
get :: IdentityT m s
get = m s -> IdentityT m s
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type MonadTrans IdentityT
lift m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
put :: s -> IdentityT m ()
put = m () -> IdentityT m ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type MonadTrans IdentityT
lift (m () -> IdentityT m ()) -> (s -> m ()) -> s -> IdentityT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put
state :: (s -> (a, s)) -> IdentityT m a
state = m a -> IdentityT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type MonadTrans IdentityT
lift (m a -> IdentityT m a)
-> ((s -> (a, s)) -> m a) -> (s -> (a, s)) -> IdentityT m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (s -> (a, s)) -> m a
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state
instance MonadState s m => MonadState s (ListT m) where
get :: ListT m s
get = m s -> ListT m s
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type MonadTrans ListT
lift m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
put :: s -> ListT m ()
put = m () -> ListT m ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type MonadTrans ListT
lift (m () -> ListT m ()) -> (s -> m ()) -> s -> ListT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put
state :: (s -> (a, s)) -> ListT m a
state = m a -> ListT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type MonadTrans ListT
lift (m a -> ListT m a)
-> ((s -> (a, s)) -> m a) -> (s -> (a, s)) -> ListT m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (s -> (a, s)) -> m a
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state
instance MonadState s m => MonadState s (MaybeT m) where
get :: MaybeT m s
get = m s -> MaybeT m s
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type MonadTrans MaybeT
lift m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
put :: s -> MaybeT m ()
put = m () -> MaybeT m ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type MonadTrans MaybeT
lift (m () -> MaybeT m ()) -> (s -> m ()) -> s -> MaybeT m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put
state :: (s -> (a, s)) -> MaybeT m a
state = m a -> MaybeT m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type MonadTrans MaybeT
lift (m a -> MaybeT m a)
-> ((s -> (a, s)) -> m a) -> (s -> (a, s)) -> MaybeT m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (s -> (a, s)) -> m a
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state
instance MonadState s m => MonadState s (ReaderT r m) where
get :: ReaderT r m s
get = m s -> ReaderT r m s
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall r. MonadTrans (ReaderT r)
lift m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
put :: s -> ReaderT r m ()
put = m () -> ReaderT r m ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall r. MonadTrans (ReaderT r)
lift (m () -> ReaderT r m ()) -> (s -> m ()) -> s -> ReaderT r m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put
state :: (s -> (a, s)) -> ReaderT r m a
state = m a -> ReaderT r m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall r. MonadTrans (ReaderT r)
lift (m a -> ReaderT r m a)
-> ((s -> (a, s)) -> m a) -> (s -> (a, s)) -> ReaderT r m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (s -> (a, s)) -> m a
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state
instance (Monoid w, MonadState s m) => MonadState s (Lazy.WriterT w m) where
get :: WriterT w m s
get = m s -> WriterT w m s
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall w. Monoid w => MonadTrans (WriterT w)
Evidence bound by a type signature of the constraint type Monoid w
lift m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
put :: s -> WriterT w m ()
put = m () -> WriterT w m ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall w. Monoid w => MonadTrans (WriterT w)
Evidence bound by a type signature of the constraint type Monoid w
lift (m () -> WriterT w m ()) -> (s -> m ()) -> s -> WriterT w m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put
state :: (s -> (a, s)) -> WriterT w m a
state = m a -> WriterT w m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall w. Monoid w => MonadTrans (WriterT w)
Evidence bound by a type signature of the constraint type Monoid w
lift (m a -> WriterT w m a)
-> ((s -> (a, s)) -> m a) -> (s -> (a, s)) -> WriterT w m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (s -> (a, s)) -> m a
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state
instance (Monoid w, MonadState s m) => MonadState s (Strict.WriterT w m) where
get :: WriterT w m s
get = m s -> WriterT w m s
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall w. Monoid w => MonadTrans (WriterT w)
Evidence bound by a type signature of the constraint type Monoid w
lift m s
forall s (m :: * -> *). MonadState s m => m s
Evidence bound by a type signature of the constraint type MonadState s m
get
put :: s -> WriterT w m ()
put = m () -> WriterT w m ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall w. Monoid w => MonadTrans (WriterT w)
Evidence bound by a type signature of the constraint type Monoid w
lift (m () -> WriterT w m ()) -> (s -> m ()) -> s -> WriterT w m ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
Evidence bound by a type signature of the constraint type MonadState s m
put
state :: (s -> (a, s)) -> WriterT w m a
state = m a -> WriterT w m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
Evidence bound by a superclass of: MonadState of the constraint type forall s (m :: * -> *). MonadState s m => Monad m
Evidence bound by a type signature of the constraint type MonadState s m
External instance of the constraint type forall w. Monoid w => MonadTrans (WriterT w)
Evidence bound by a type signature of the constraint type Monoid w
lift (m a -> WriterT w m a)
-> ((s -> (a, s)) -> m a) -> (s -> (a, s)) -> WriterT w m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (s -> (a, s)) -> m a
forall s (m :: * -> *) a. MonadState s m => (s -> (a, s)) -> m a
Evidence bound by a type signature of the constraint type MonadState s m
state