@@ -22,6 +22,10 @@ import Control.Monad.Trans
2222import Control.Monad.Trans.Except (ExceptT)
2323import Control.Monad.Trans.Identity (IdentityT)
2424import Control.Monad.Trans.Maybe (MaybeT)
25+import Control.Monad.Trans.State.Lazy as Lazy
26+import Control.Monad.Trans.State.Strict as Strict
27+import Control.Monad.Trans.RWS.Lazy as Lazy
28+import Control.Monad.Trans.RWS.Strict as Strict
2529import Control.Monad.Trans.Writer.Lazy as Lazy
2630import Control.Monad.Trans.Writer.Strict as Strict
2731import Data.Functor.Identity
@@ -171,6 +175,22 @@ instance MonadDeclare d m => MonadDeclare d (ReaderT r m) where
171175 declare = lift . declare
172176 look = lift look
173177
178+instance (Monoid w, MonadDeclare d m) => MonadDeclare d (Lazy.RWST r w s m) where
179+ declare = lift . declare
180+ look = lift look
181+
182+instance (Monoid w, MonadDeclare d m) => MonadDeclare d (Strict.RWST r w s m) where
183+ declare = lift . declare
184+ look = lift look
185+
186+instance MonadDeclare d m => MonadDeclare d (Lazy.StateT s m) where
187+ declare = lift . declare
188+ look = lift look
189+
190+instance MonadDeclare d m => MonadDeclare d (Strict.StateT s m) where
191+ declare = lift . declare
192+ look = lift look
193+
174194instance (Monoid w, MonadDeclare d m) => MonadDeclare d (Lazy.WriterT w m) where
175195 declare = lift . declare
176196 look = lift look