-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | An mtl compatible version of the Ghc-Api monads
--   and monad-transformers.
--   
--   Provides an <a>mtl</a> compatible version of the <a>GhcT</a>
--   monad-transformer defined in the 'GHC-API' since version 6.10.1.
@package ghc-mtl
@version 1.2.1.0

module Control.Monad.Ghc
data Ghc a
runGhc :: Maybe FilePath -> Ghc a -> IO a
data GhcT m a
runGhcT :: (Functor m, MonadIO m, MonadCatch m, MonadMask m) => Maybe FilePath -> GhcT m a -> m a

-- | A monad that has all the features needed by GHC API calls.
--   
--   In short, a GHC monad
--   
--   <ul>
--   <li>allows embedding of IO actions,</li>
--   <li>can log warnings,</li>
--   <li>allows handling of (extensible) exceptions, and</li>
--   <li>maintains a current session.</li>
--   </ul>
--   
--   If you do not use <a>Ghc</a> or <a>GhcT</a>, make sure to call
--   <a>initGhcMonad</a> before any call to the GHC API functions can
--   occur.
class (Functor m, MonadIO m, ExceptionMonad m, HasDynFlags m) => GhcMonad (m :: * -> *)
getSession :: GhcMonad m => m HscEnv
setSession :: GhcMonad m => HscEnv -> m ()
instance (Control.Monad.Catch.MonadMask m, Control.Monad.IO.Class.MonadIO m) => DynFlags.HasDynFlags (Control.Monad.Ghc.GhcT m)
instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.Ghc.GhcT m)
instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Ghc.GhcT m)
instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.Ghc.MTLAdapter m)
instance GHC.Base.Applicative m => GHC.Base.Applicative (Control.Monad.Ghc.MTLAdapter m)
instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Ghc.MTLAdapter m)
instance GhcMonad.GhcMonad Control.Monad.Ghc.Ghc
instance GHC.Base.Applicative Control.Monad.Ghc.Ghc
instance Control.Monad.IO.Class.MonadIO Control.Monad.Ghc.Ghc
instance Exception.ExceptionMonad Control.Monad.Ghc.Ghc
instance DynFlags.HasDynFlags Control.Monad.Ghc.Ghc
instance GHC.Base.Monad Control.Monad.Ghc.Ghc
instance GHC.Base.Functor Control.Monad.Ghc.Ghc
instance Control.Monad.Catch.MonadThrow Control.Monad.Ghc.Ghc
instance Control.Monad.Catch.MonadCatch Control.Monad.Ghc.Ghc
instance Control.Monad.Catch.MonadMask Control.Monad.Ghc.Ghc
instance (GHC.Base.Functor m, GHC.Base.Monad m) => GHC.Base.Applicative (Control.Monad.Ghc.GhcT m)
instance Control.Monad.Trans.Class.MonadTrans Control.Monad.Ghc.GhcT
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Monad.Ghc.GhcT m)
instance Control.Monad.Catch.MonadCatch m => Control.Monad.Catch.MonadThrow (Control.Monad.Ghc.GhcT m)
instance (Control.Monad.IO.Class.MonadIO m, Control.Monad.Catch.MonadCatch m, Control.Monad.Catch.MonadMask m) => Control.Monad.Catch.MonadCatch (Control.Monad.Ghc.GhcT m)
instance (Control.Monad.IO.Class.MonadIO m, Control.Monad.Catch.MonadMask m) => Control.Monad.Catch.MonadMask (Control.Monad.Ghc.GhcT m)
instance (Control.Monad.IO.Class.MonadIO m, Control.Monad.Catch.MonadCatch m, Control.Monad.Catch.MonadMask m) => Exception.ExceptionMonad (Control.Monad.Ghc.GhcT m)
instance (GHC.Base.Functor m, Control.Monad.IO.Class.MonadIO m, Control.Monad.Catch.MonadCatch m, Control.Monad.Catch.MonadMask m) => GhcMonad.GhcMonad (Control.Monad.Ghc.GhcT m)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Monad.Ghc.MTLAdapter m)
instance (Control.Monad.IO.Class.MonadIO m, Control.Monad.Catch.MonadCatch m, Control.Monad.Catch.MonadMask m) => Exception.ExceptionMonad (Control.Monad.Ghc.MTLAdapter m)
