hsdev-0.2.5.1: Haskell development library

Safe HaskellNone
LanguageHaskell98

HsDev.Tools.Ghc.MGhc

Contents

Synopsis

Documentation

data SessionState s Source #

Constructors

SessionState 

Instances

Default (SessionState s) Source # 

Methods

def :: SessionState s #

Monad m => MonadState (SessionState s) (MGhcT s m) Source # 

Methods

get :: MGhcT s m (SessionState s) #

put :: SessionState s -> MGhcT s m () #

state :: (SessionState s -> (a, SessionState s)) -> MGhcT s m a #

newtype MGhcT s m a Source #

Multi-session ghc monad

Constructors

MGhcT 

Instances

Monad m => MonadState (SessionState s) (MGhcT s m) Source # 

Methods

get :: MGhcT s m (SessionState s) #

put :: SessionState s -> MGhcT s m () #

state :: (SessionState s -> (a, SessionState s)) -> MGhcT s m a #

Monad m => MonadReader (Maybe FilePath) (MGhcT s m) Source # 

Methods

ask :: MGhcT s m (Maybe FilePath) #

local :: (Maybe FilePath -> Maybe FilePath) -> MGhcT s m a -> MGhcT s m a #

reader :: (Maybe FilePath -> a) -> MGhcT s m a #

Monad m => Monad (MGhcT s m) Source # 

Methods

(>>=) :: MGhcT s m a -> (a -> MGhcT s m b) -> MGhcT s m b #

(>>) :: MGhcT s m a -> MGhcT s m b -> MGhcT s m b #

return :: a -> MGhcT s m a #

fail :: String -> MGhcT s m a #

Functor m => Functor (MGhcT s m) Source # 

Methods

fmap :: (a -> b) -> MGhcT s m a -> MGhcT s m b #

(<$) :: a -> MGhcT s m b -> MGhcT s m a #

Monad m => Applicative (MGhcT s m) Source # 

Methods

pure :: a -> MGhcT s m a #

(<*>) :: MGhcT s m (a -> b) -> MGhcT s m a -> MGhcT s m b #

(*>) :: MGhcT s m a -> MGhcT s m b -> MGhcT s m b #

(<*) :: MGhcT s m a -> MGhcT s m b -> MGhcT s m a #

MonadIO m => MonadIO (MGhcT s m) Source # 

Methods

liftIO :: IO a -> MGhcT s m a #

MonadThrow m => MonadThrow (MGhcT s m) Source # 

Methods

throwM :: Exception e => e -> MGhcT s m a #

MonadCatch m => MonadCatch (MGhcT s m) Source # 

Methods

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

MonadMask m => MonadMask (MGhcT s m) Source # 

Methods

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

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

ExceptionMonad m => GhcMonad (MGhcT s m) Source # 

Methods

getSession :: MGhcT s m HscEnv #

setSession :: HscEnv -> MGhcT s m () #

MonadIO m => HasDynFlags (MGhcT s m) Source # 

Methods

getDynFlags :: MGhcT s m DynFlags #

ExceptionMonad m => ExceptionMonad (MGhcT s m) Source # 

Methods

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

gmask :: ((MGhcT s m a -> MGhcT s m a) -> MGhcT s m b) -> MGhcT s m b #

gbracket :: MGhcT s m a -> (a -> MGhcT s m b) -> (a -> MGhcT s m c) -> MGhcT s m c #

gfinally :: MGhcT s m a -> MGhcT s m b -> MGhcT s m a #

MonadLog m => MonadLog (MGhcT s m) Source # 

Methods

askLog :: MGhcT s m Log #

localLog :: (Log -> Log) -> MGhcT s m a -> MGhcT s m a #

runMGhcT :: (MonadIO m, ExceptionMonad m, Ord s) => Maybe FilePath -> MGhcT s m a -> m a Source #

Run multi-session ghc

liftGhc :: MonadIO m => Ghc a -> MGhcT s m a Source #

Lift Ghc monad onto MGhc

hasSession :: (MonadIO m, Ord s) => s -> MGhcT s m Bool Source #

Does session exist

findSession :: (MonadIO m, Ord s) => s -> MGhcT s m (Maybe s) Source #

Find session

findSessionBy :: MonadIO m => (s -> Bool) -> MGhcT s m [s] Source #

Find session by

saveSession :: (MonadIO m, ExceptionMonad m, Ord s) => MGhcT s m (Maybe s) Source #

Save current session

initSession :: (MonadIO m, ExceptionMonad m, Ord s) => MGhcT s m () Source #

Initialize new session

newSession :: (MonadIO m, ExceptionMonad m, Ord s) => s -> MGhcT s m () Source #

Create new named session, deleting existing session

switchSession :: (MonadIO m, ExceptionMonad m, Ord s) => s -> MGhcT s m Bool Source #

Switch to session, creating if not exist, returns True if session was created

switchSession_ :: (MonadIO m, ExceptionMonad m, Ord s) => s -> Maybe (MGhcT s m ()) -> MGhcT s m () Source #

Switch to session, creating if not exist and initializing with passed function

deleteSession :: (MonadIO m, ExceptionMonad m, Ord s) => s -> MGhcT s m () Source #

Delete existing session

restoreSession :: (MonadIO m, MonadMask m, ExceptionMonad m, Ord s) => MGhcT s m a -> MGhcT s m a Source #

Save and restore session

usingSession :: (MonadIO m, MonadMask m, ExceptionMonad m, Ord s) => s -> MGhcT s m a -> MGhcT s m a Source #

Run action using session, restoring session back

Orphan instances

MonadTrans GhcT Source # 

Methods

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

MonadState st m => MonadState st (GhcT m) Source # 

Methods

get :: GhcT m st #

put :: st -> GhcT m () #

state :: (st -> (a, st)) -> GhcT m a #

MonadReader r m => MonadReader r (GhcT m) Source # 

Methods

ask :: GhcT m r #

local :: (r -> r) -> GhcT m a -> GhcT m a #

reader :: (r -> a) -> GhcT m a #

MonadThrow m => MonadThrow (GhcT m) Source # 

Methods

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

MonadCatch m => MonadCatch (GhcT m) Source # 

Methods

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

MonadMask m => MonadMask (GhcT m) Source # 

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 #

MFunctor * GhcT Source # 

Methods

hoist :: Monad m => (forall a. m a -> n a) -> t m b -> t n b #

ExceptionMonad m => ExceptionMonad (StateT s m) Source # 

Methods

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

gmask :: ((StateT s m a -> StateT s m a) -> StateT s m b) -> StateT s m b #

gbracket :: StateT s m a -> (a -> StateT s m b) -> (a -> StateT s m c) -> StateT s m c #

gfinally :: StateT s m a -> StateT s m b -> StateT s m a #

ExceptionMonad m => ExceptionMonad (ReaderT * r m) Source # 

Methods

gcatch :: Exception e => ReaderT * r m a -> (e -> ReaderT * r m a) -> ReaderT * r m a #

gmask :: ((ReaderT * r m a -> ReaderT * r m a) -> ReaderT * r m b) -> ReaderT * r m b #

gbracket :: ReaderT * r m a -> (a -> ReaderT * r m b) -> (a -> ReaderT * r m c) -> ReaderT * r m c #

gfinally :: ReaderT * r m a -> ReaderT * r m b -> ReaderT * r m a #