module DeepControl.Monad.Trans.RWS (
module Control.Monad.RWS,
MonadReader(..), MonadWriter(..), MonadState(..),
) where
import DeepControl.Applicative
import DeepControl.Monad.Trans
import Control.Monad.Reader (MonadReader(..))
import Control.Monad.Writer (MonadWriter(..))
import Control.Monad.State (MonadState(..))
import Control.Monad.RWS
import Data.Monoid
instance (Monoid w) => MonadTransDown (RWST r w s) where
type TransDown (RWST r w s) = RWS r w s
instance (Monoid w) => MonadTransCover (RWST r w s) where
(|*|) = RWST . ((*:)|$>>) . runRWS