ghc-mtl-1.2.1.0: An mtl compatible version of the Ghc-Api monads and monad-transformers.

Safe HaskellNone
LanguageHaskell98

Control.Monad.Ghc

Synopsis

Documentation

data Ghc a Source #

Instances
Monad Ghc Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

(>>=) :: Ghc a -> (a -> Ghc b) -> Ghc b #

(>>) :: Ghc a -> Ghc b -> Ghc b #

return :: a -> Ghc a #

fail :: String -> Ghc a #

Functor Ghc Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

fmap :: (a -> b) -> Ghc a -> Ghc b #

(<$) :: a -> Ghc b -> Ghc a #

Applicative Ghc Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

pure :: a -> Ghc a #

(<*>) :: Ghc (a -> b) -> Ghc a -> Ghc b #

liftA2 :: (a -> b -> c) -> Ghc a -> Ghc b -> Ghc c #

(*>) :: Ghc a -> Ghc b -> Ghc b #

(<*) :: Ghc a -> Ghc b -> Ghc a #

MonadIO Ghc Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

liftIO :: IO a -> Ghc a #

MonadThrow Ghc Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

throwM :: Exception e => e -> Ghc a #

MonadCatch Ghc Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

catch :: Exception e => Ghc a -> (e -> Ghc a) -> Ghc a #

MonadMask Ghc Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

mask :: ((forall a. Ghc a -> Ghc a) -> Ghc b) -> Ghc b #

uninterruptibleMask :: ((forall a. Ghc a -> Ghc a) -> Ghc b) -> Ghc b #

generalBracket :: Ghc a -> (a -> ExitCase b -> Ghc c) -> (a -> Ghc b) -> Ghc (b, c) #

GhcMonad Ghc Source # 
Instance details

Defined in Control.Monad.Ghc

HasDynFlags Ghc Source # 
Instance details

Defined in Control.Monad.Ghc

ExceptionMonad Ghc Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

gcatch :: Exception e => Ghc a -> (e -> Ghc a) -> Ghc a #

gmask :: ((Ghc a -> Ghc a) -> Ghc b) -> Ghc b #

gbracket :: Ghc a -> (a -> Ghc b) -> (a -> Ghc c) -> Ghc c #

gfinally :: Ghc a -> Ghc b -> Ghc a #

data GhcT m a Source #

Instances
MonadTrans GhcT Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

lift :: Monad m => m a -> GhcT m a #

Monad m => Monad (GhcT m) Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

(>>=) :: GhcT m a -> (a -> GhcT m b) -> GhcT m b #

(>>) :: GhcT m a -> GhcT m b -> GhcT m b #

return :: a -> GhcT m a #

fail :: String -> GhcT m a #

Functor m => Functor (GhcT m) Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

fmap :: (a -> b) -> GhcT m a -> GhcT m b #

(<$) :: a -> GhcT m b -> GhcT m a #

(Functor m, Monad m) => Applicative (GhcT m) Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

pure :: a -> GhcT m a #

(<*>) :: GhcT m (a -> b) -> GhcT m a -> GhcT m b #

liftA2 :: (a -> b -> c) -> GhcT m a -> GhcT m b -> GhcT m c #

(*>) :: GhcT m a -> GhcT m b -> GhcT m b #

(<*) :: GhcT m a -> GhcT m b -> GhcT m a #

MonadIO m => MonadIO (GhcT m) Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

liftIO :: IO a -> GhcT m a #

MonadCatch m => MonadThrow (GhcT m) Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

throwM :: Exception e => e -> GhcT m a #

(MonadIO m, MonadCatch m, MonadMask m) => MonadCatch (GhcT m) Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

catch :: Exception e => GhcT m a -> (e -> GhcT m a) -> GhcT m a #

(MonadIO m, MonadMask m) => MonadMask (GhcT m) Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

mask :: ((forall a. GhcT m a -> GhcT m a) -> GhcT m b) -> GhcT m b #

uninterruptibleMask :: ((forall a. GhcT m a -> GhcT m a) -> GhcT m b) -> GhcT m b #

generalBracket :: GhcT m a -> (a -> ExitCase b -> GhcT m c) -> (a -> GhcT m b) -> GhcT m (b, c) #

(Functor m, MonadIO m, MonadCatch m, MonadMask m) => GhcMonad (GhcT m) Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

getSession :: GhcT m HscEnv #

setSession :: HscEnv -> GhcT m () #

MonadIO m => HasDynFlags (GhcT m) Source # 
Instance details

Defined in Control.Monad.Ghc

(MonadIO m, MonadCatch m, MonadMask m) => ExceptionMonad (GhcT m) Source # 
Instance details

Defined in Control.Monad.Ghc

Methods

gcatch :: Exception e => GhcT m a -> (e -> GhcT m a) -> GhcT m a #

gmask :: ((GhcT m a -> GhcT m a) -> GhcT m b) -> GhcT m b #

gbracket :: GhcT m a -> (a -> GhcT m b) -> (a -> GhcT m c) -> GhcT m c #

gfinally :: GhcT m a -> GhcT m b -> GhcT m a #

class (Functor m, MonadIO m, ExceptionMonad m, HasDynFlags m) => GhcMonad (m :: * -> *) where #

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.

Minimal complete definition

getSession, setSession

Methods

getSession :: m HscEnv #

setSession :: HscEnv -> m () #

Instances
GhcMonad Ghc 
Instance details

Defined in GhcMonad

GhcMonad Ghc # 
Instance details

Defined in Control.Monad.Ghc

ExceptionMonad m => GhcMonad (GhcT m) 
Instance details

Defined in GhcMonad

Methods

getSession :: GhcT m HscEnv #

setSession :: HscEnv -> GhcT m () #

(Functor m, MonadIO m, MonadCatch m, MonadMask m) => GhcMonad (GhcT m) # 
Instance details

Defined in Control.Monad.Ghc

Methods

getSession :: GhcT m HscEnv #

setSession :: HscEnv -> GhcT m () #