AutoForms-0.4.0: src/Control/Monad/Unlift.hs
-- | Dual to Control.Monad.Trans
module Control.Monad.Unlift
( Unlift(..)
)
where
import Control.Monad.Reader
import Control.Monad.Writer
class Unlift t where
unlift :: (Monad m) => t m a -> t m (m a)
instance Unlift (ReaderT r) where
unlift e = do r <- ask
return (runReaderT e r)
instance (Monoid w) => Unlift (WriterT w) where
unlift e = do return $ (runWriterT e >>= return . fst)