-- 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 mtl compatible version of the GhcT
--   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
--   
--   
--   
- allows embedding of IO actions,
--   
- can log warnings,
--   
- allows handling of (extensible) exceptions, and
--   
- maintains a current session.
--   
--   
--   If you do not use Ghc or GhcT, make sure to call
--   initGhcMonad before any call to the GHC API functions can
--   occur.
class (Functor m, MonadIO m, ExceptionMonad m, HasDynFlags m) => GhcMonad (m :: Type -> Type)
getSession :: GhcMonad m => m HscEnv
setSession :: GhcMonad m => HscEnv -> m ()
instance 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 (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)
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
