module Control.Monad.RWSX.Class (
MonadRWSX,
module Control.Monad.Reader.Class,
module Control.Monad.State.Class,
module Control.Monad.Writer.Class,
module Control.Monad.ReaderX.Class,
module Control.Monad.StateX.Class,
module Control.Monad.WriterX.Class,
) where
import Control.Monad.Reader.Class
import Control.Monad.State.Class
import Control.Monad.Writer.Class
import Data.Monoid
import Control.Monad.Index
import Control.Monad.ReaderX.Class
import Control.Monad.StateX.Class
import Control.Monad.WriterX.Class
import Control.Monad.Reader
import Control.Monad.State
import Control.Monad.Writer
import Control.Monad.RWS
import Control.Monad.ReaderX()
import Control.Monad.StateX()
import Control.Monad.WriterX()
class (Monoid w, Index ix, MonadReaderX ix r m, MonadWriterX ix w m, MonadStateX ix s m)
=> MonadRWSX ix r w s m | ix m -> r, ix m -> w, ix m -> s
instance (Monoid w1, Index ix1
,MonadRWSX ix1 r1 w1 s1 m
)
=> MonadRWSX ix1 r1 w1 s1 (ReaderT r2 m) where
instance (Monoid w1, Monoid w2, Index ix1
,MonadRWSX ix1 r1 w1 s1 m
)
=> MonadRWSX ix1 r1 w1 s1 (WriterT w2 m) where
instance (Monoid w1, Index ix1
,MonadRWSX ix1 r1 w1 s1 m
)
=> MonadRWSX ix1 r1 w1 s1 (StateT s2 m) where
instance (Monoid w1, Monoid w2, Index ix1
, MonadRWSX ix1 r1 w1 s1 m
)
=> MonadRWSX ix1 r1 w1 s1 (RWST r2 w2 s2 m) where