definitive-base-2.3: The base modules of the Definitive framework.

Safe HaskellNone
LanguageHaskell2010

Algebra.Monad.RWS

Contents

Synopsis

Documentation

newtype RWST r w s m a Source

Constructors

RWST 

Fields

runRWST :: (r, s) -> m (a, s, w)
 

Instances

(Monad m, Monoid w, MonadFuture n m) => MonadFuture n (RWST r w s m) 
(Monoid w, MonadError e m) => MonadError e (RWST r w s m) 
(Monad m, Monoid w) => MonadWriter w (RWST r w s m) 
(Monad m, Monoid w) => MonadReader r (RWST r w s m) 
(Monad m, Monoid w) => MonadState s (RWST r w s m) 
Monoid w => ConcreteMonad (RWST r w s) 
Monoid w => MonadTrans (RWST r w s) 
Monoid w => MonadInternal (RWST r w s) 
(Unit f, Monoid w) => Unit (RWST r w s f) 
(Monoid w, MonadCont m) => MonadCont (RWST r w s m) 
(Monoid w, MonadList m) => MonadList (RWST r w s m) 
(Monoid w, MonadFix m) => MonadFix (RWST r w s m) 
Traversable m => Traversable (RWST Void w Void m) 
Foldable m => Foldable (RWST Void w Void m) 
(Monoid w, Monad m) => Monad (RWST r w s m) 
(Monoid w, Monad m) => Applicative (RWST r w s m) 
Functor f => Functor (RWST r w s f) 
Ring (m (a, s, w)) => Ring (RWST r w s m a) 
Semiring (m (a, s, w)) => Semiring (RWST r w s m a) 
Monoid (m (a, s, w)) => Monoid (RWST r w s m a) 
Semigroup (m (a, s, w)) => Semigroup (RWST r w s m a) 

type RWS r w s a = RWST r w s Id a Source

class MonadTrans t => MonadInternal t where Source

Methods

internal :: Monad m => (forall c. m (c, a) -> m (c, b)) -> t m a -> t m b Source

_RWST :: Iso (RWST r w s m a) (RWST r' w' s' m' a') ((r, s) -> m (a, s, w)) ((r', s') -> m' (a', s', w')) Source

Default methods

get_ :: (MonadTrans t, MonadState a m) => t m a Source

put_ :: (MonadTrans t, MonadState s m) => s -> t m () Source

modify_ :: (MonadTrans t, MonadState s m) => (s -> s) -> t m () Source

local_ :: (MonadInternal t, MonadReader r m) => (r -> r) -> t m a -> t m a Source

ask_ :: (MonadTrans t, MonadReader a m) => t m a Source

tell_ :: (MonadWriter w m, MonadTrans t) => w -> t m () Source

listen_ :: (MonadInternal t, MonadWriter w m) => t m a -> t m (w, a) Source

censor_ :: (MonadInternal t, MonadWriter w m) => t m (a, w -> w) -> t m a Source

getCounter_ :: (MonadTrans t, MonadCounter w acc m) => t m acc Source