ghc-mod-5.6.0.0: Happy Haskell Programming

Safe HaskellNone
LanguageHaskell2010

Language.Haskell.GhcMod.Monad.Types

Contents

Synopsis

Monad Types

type GhcModT m = GmT (GmOutT m) Source #

newtype GmOutT m a Source #

Constructors

GmOutT 

Fields

Instances

MonadTrans GmOutT Source # 

Methods

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

MonadTransControl GmOutT Source # 

Associated Types

type StT (GmOutT :: (* -> *) -> * -> *) a :: * #

Methods

liftWith :: Monad m => (Run GmOutT -> m a) -> GmOutT m a #

restoreT :: Monad m => m (StT GmOutT a) -> GmOutT m a #

MonadBaseControl IO m => MonadBase IO (GmOutT m) Source # 

Methods

liftBase :: IO α -> GmOutT m α #

MonadBaseControl IO m => MonadBaseControl IO (GmOutT m) Source # 

Associated Types

type StM (GmOutT m :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (GmOutT m) IO -> IO a) -> GmOutT m a #

restoreM :: StM (GmOutT m) a -> GmOutT m a #

Monad m => Monad (GmOutT m) Source # 

Methods

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

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

return :: a -> GmOutT m a #

fail :: String -> GmOutT m a #

Functor m => Functor (GmOutT m) Source # 

Methods

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

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

Applicative m => Applicative (GmOutT m) Source # 

Methods

pure :: a -> GmOutT m a #

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

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

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

Alternative m => Alternative (GmOutT m) Source # 

Methods

empty :: GmOutT m a #

(<|>) :: GmOutT m a -> GmOutT m a -> GmOutT m a #

some :: GmOutT m a -> GmOutT m [a] #

many :: GmOutT m a -> GmOutT m [a] #

MonadPlus m => MonadPlus (GmOutT m) Source # 

Methods

mzero :: GmOutT m a #

mplus :: GmOutT m a -> GmOutT m a -> GmOutT m a #

GmEnv m => GmEnv (GmOutT m) Source # 
GmLog m => GmLog (GmOutT m) Source # 
Monad m => GmOut (GmOutT m) Source # 
type StT GmOutT a Source # 
type StM (GmOutT m) a Source # 
type StM (GmOutT m) a = StM (ReaderT * GhcModEnv m) a

newtype GmT m a Source #

Instances

MonadTrans GmT Source # 

Methods

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

MonadTransControl GmT Source # 

Associated Types

type StT (GmT :: (* -> *) -> * -> *) a :: * #

Methods

liftWith :: Monad m => (Run GmT -> m a) -> GmT m a #

restoreT :: Monad m => m (StT GmT a) -> GmT m a #

MonadBaseControl IO m => MonadBase IO (GmT m) Source # 

Methods

liftBase :: IO α -> GmT m α #

MonadBaseControl IO m => MonadBaseControl IO (GmT m) Source # 

Associated Types

type StM (GmT m :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (GmT m) IO -> IO a) -> GmT m a #

restoreM :: StM (GmT m) a -> GmT m a #

Monad m => MonadJournal GhcModLog (GmT m) Source # 

Methods

journal :: GhcModLog -> GmT m () #

history :: GmT m GhcModLog #

clear :: GmT m () #

Monad m => MonadError GhcModError (GmT m) Source # 

Methods

throwError :: GhcModError -> GmT m a #

catchError :: GmT m a -> (GhcModError -> GmT m a) -> GmT m a #

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

Methods

ask :: GmT m r #

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

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

MonadState s m => MonadState s (GmT m) Source # 

Methods

get :: GmT m s #

put :: s -> GmT m () #

state :: (s -> (a, s)) -> GmT m a #

Monad m => Monad (GmT m) Source # 

Methods

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

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

return :: a -> GmT m a #

fail :: String -> GmT m a #

Functor m => Functor (GmT m) Source # 

Methods

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

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

Monad m => Applicative (GmT m) Source # 

Methods

pure :: a -> GmT m a #

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

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

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

Monad m => Alternative (GmT m) Source # 

Methods

empty :: GmT m a #

(<|>) :: GmT m a -> GmT m a -> GmT m a #

some :: GmT m a -> GmT m [a] #

many :: GmT m a -> GmT m [a] #

Monad m => MonadPlus (GmT m) Source # 

Methods

mzero :: GmT m a #

mplus :: GmT m a -> GmT m a -> GmT m a #

Monad m => GmEnv (GmT m) Source # 

Methods

gmeAsk :: GmT m GhcModEnv Source #

gmeReader :: (GhcModEnv -> a) -> GmT m a Source #

gmeLocal :: (GhcModEnv -> GhcModEnv) -> GmT m a -> GmT m a Source #

Monad m => GmLog (GmT m) Source # 
GmOut m => GmOut (GmT m) Source # 
Monad m => GmState (GmT m) Source # 
type StT GmT a Source # 
type StM (GmT m) a Source # 

newtype GmlT m a Source #

Constructors

GmlT 

Fields

Instances

MonadTrans GmlT Source # 

Methods

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

MonadTransControl GmlT Source # 

Associated Types

type StT (GmlT :: (* -> *) -> * -> *) a :: * #

Methods

liftWith :: Monad m => (Run GmlT -> m a) -> GmlT m a #

restoreT :: Monad m => m (StT GmlT a) -> GmlT m a #

MonadBaseControl IO m => MonadBase IO (GmlT m) Source # 

Methods

liftBase :: IO α -> GmlT m α #

MonadBaseControl IO m => MonadBaseControl IO (GmlT m) Source # 

Associated Types

type StM (GmlT m :: * -> *) a :: * #

Methods

liftBaseWith :: (RunInBase (GmlT m) IO -> IO a) -> GmlT m a #

restoreM :: StM (GmlT m) a -> GmlT m a #

Monad m => MonadError GhcModError (GmlT m) Source # 

Methods

throwError :: GhcModError -> GmlT m a #

catchError :: GmlT m a -> (GhcModError -> GmlT m a) -> GmlT m a #

Monad m => Monad (GmlT m) Source # 

Methods

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

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

return :: a -> GmlT m a #

fail :: String -> GmlT m a #

Functor m => Functor (GmlT m) Source # 

Methods

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

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

Monad m => Applicative (GmlT m) Source # 

Methods

pure :: a -> GmlT m a #

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

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

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

Monad m => Alternative (GmlT m) Source # 

Methods

empty :: GmlT m a #

(<|>) :: GmlT m a -> GmlT m a -> GmlT m a #

some :: GmlT m a -> GmlT m [a] #

many :: GmlT m a -> GmlT m [a] #

Monad m => MonadPlus (GmlT m) Source # 

Methods

mzero :: GmlT m a #

mplus :: GmlT m a -> GmlT m a -> GmlT m a #

(Monad m, GmEnv (GhcModT m)) => GmEnv (GmlT m) Source # 

Methods

gmeAsk :: GmlT m GhcModEnv Source #

gmeReader :: (GhcModEnv -> a) -> GmlT m a Source #

gmeLocal :: (GhcModEnv -> GhcModEnv) -> GmlT m a -> GmlT m a Source #

(Monad m, GmLog (GhcModT m)) => GmLog (GmlT m) Source # 
Monad m => GmOut (GmlT m) Source # 
(Monad m, GmState (GhcModT m)) => GmState (GmlT m) Source # 
type StT GmlT a Source # 
type StT GmlT a = StT GmT a
type StM (GmlT m) a Source # 
type StM (GmlT m) a = StM (GmT m) a

newtype LightGhc a Source #

Constructors

LightGhc 

Instances

Monad LightGhc Source # 

Methods

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

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

return :: a -> LightGhc a #

fail :: String -> LightGhc a #

Functor LightGhc Source # 

Methods

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

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

Applicative LightGhc Source # 

Methods

pure :: a -> LightGhc a #

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

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

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

type GmGhc m = (IOish m, GhcMonad m) Source #

type IOish m = (Functor m, MonadIO m, MonadBaseControl IO m, ExceptionMonad m) Source #

A constraint alias (-XConstraintKinds) to make functions dealing with GhcModT somewhat cleaner.

Basicially an IOish m => m is a Monad supporting arbitrary IO and exception handling. Usually this will simply be IO but we parametrise it in the exported API so users have the option to use a custom inner monad.

Environment, state and logging

data GhcModEnv Source #

Constructors

GhcModEnv 

data GmComponent t eps Source #

Instances

Functor (GmComponent t) Source # 

Methods

fmap :: (a -> b) -> GmComponent t a -> GmComponent t b #

(<$) :: a -> GmComponent t b -> GmComponent t a #

Eq eps => Eq (GmComponent t eps) Source # 

Methods

(==) :: GmComponent t eps -> GmComponent t eps -> Bool #

(/=) :: GmComponent t eps -> GmComponent t eps -> Bool #

Ord eps => Ord (GmComponent t eps) Source # 

Methods

compare :: GmComponent t eps -> GmComponent t eps -> Ordering #

(<) :: GmComponent t eps -> GmComponent t eps -> Bool #

(<=) :: GmComponent t eps -> GmComponent t eps -> Bool #

(>) :: GmComponent t eps -> GmComponent t eps -> Bool #

(>=) :: GmComponent t eps -> GmComponent t eps -> Bool #

max :: GmComponent t eps -> GmComponent t eps -> GmComponent t eps #

min :: GmComponent t eps -> GmComponent t eps -> GmComponent t eps #

Read eps => Read (GmComponent t eps) Source # 
Show eps => Show (GmComponent t eps) Source # 

Methods

showsPrec :: Int -> GmComponent t eps -> ShowS #

show :: GmComponent t eps -> String #

showList :: [GmComponent t eps] -> ShowS #

Generic (GmComponent t eps) Source # 

Associated Types

type Rep (GmComponent t eps) :: * -> * #

Methods

from :: GmComponent t eps -> Rep (GmComponent t eps) x #

to :: Rep (GmComponent t eps) x -> GmComponent t eps #

Binary eps => Binary (GmComponent t eps) Source # 

Methods

put :: GmComponent t eps -> Put #

get :: Get (GmComponent t eps) #

putList :: [GmComponent t eps] -> Put #

type Rep (GmComponent t eps) Source # 

Accessing GhcModEnv, GhcModState and GhcModLog

data GhcModError Source #

Constructors

GMENoMsg

Unknown error

GMEString String

Some Error with a message. These are produced mostly by fail calls on GhcModT.

GMECabalConfigure GhcModError

Configuring a cabal project failed.

GMEStackConfigure GhcModError

Configuring a stack project failed.

GMEStackBootstrap GhcModError

Bootstrapping stack environment failed (process exited with failure)

GMECabalCompAssignment [(Either FilePath ModuleName, Set ChComponentName)]

Could not find a consistent component assignment for modules

GMEProcess String String [String] (Either Int GhcModError)

Launching an operating system process failed. Fields in order: function, command, arguments, (stdout, stderr, exitcode)

GMENoCabalFile

No cabal file found.

GMETooManyCabalFiles [FilePath]

Too many cabal files found.

type Gm m = (GmEnv m, GmState m, GmLog m, GmOut m) Source #

class Monad m => GmEnv m where Source #

Minimal complete definition

(gmeAsk | gmeReader), gmeLocal

Methods

gmeAsk :: m GhcModEnv Source #

gmeReader :: (GhcModEnv -> a) -> m a Source #

gmeLocal :: (GhcModEnv -> GhcModEnv) -> m a -> m a Source #

class Monad m => GmLog m where Source #

Minimal complete definition

gmlJournal, gmlHistory, gmlClear

Instances

(Monad m, GmLog m) => GmLog (MaybeT m) Source # 
(Monad m, GmLog (GhcModT m)) => GmLog (GmlT m) Source # 
Monad m => GmLog (GmT m) Source # 
GmLog m => GmLog (GmOutT m) Source # 
Monad m => GmLog (LogDiscardT m) Source # 
Monad m => GmLog (JournalT GhcModLog m) Source # 
(Monad m, GmLog m, Error e) => GmLog (ErrorT e m) Source # 
(Monad m, GmLog m) => GmLog (StateT s m) Source # 
(Monad m, GmLog m) => GmLog (ReaderT * r m) Source # 

class Monad m => GmOut m where Source #

Minimal complete definition

gmoAsk

Methods

gmoAsk :: m GhcModOut Source #

Instances

GmOut m => GmOut (MaybeT m) Source # 
Monad m => GmOut (GmlT m) Source # 
GmOut m => GmOut (GmT m) Source # 
Monad m => GmOut (GmOutT m) Source # 
GmOut m => GmOut (JournalT w m) Source # 
GmOut m => GmOut (StateT s m) Source # 

withOptions :: GmEnv m => (Options -> Options) -> m a -> m a Source #

Re-exporting convenient stuff

class MonadIOC m => MonadIO m where Source #

Minimal complete definition

liftIO

Methods

liftIO :: IO a -> m a Source #

liftIO :: MonadIO m => IO a -> m a Source #

gmlGetSession :: (MonadIO m, MonadBaseControl IO m) => GmlT m HscEnv Source #

Get the underlying GHC session

gmlSetSession :: (MonadIO m, MonadBaseControl IO m) => HscEnv -> GmlT m () Source #

Set the underlying GHC session

Orphan instances

GhcMonad LightGhc Source # 
HasDynFlags LightGhc Source # 
ExceptionMonad LightGhc Source # 

Methods

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

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

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

gfinally :: LightGhc a -> LightGhc b -> LightGhc a #

(MonadIO m, MonadBaseControl IO m) => GhcMonad (GmlT m) Source # 

Methods

getSession :: GmlT m HscEnv #

setSession :: HscEnv -> GmlT m () #

(MonadIO m, MonadBaseControl IO m) => HasDynFlags (GmlT m) Source # 
(MonadIO m, MonadBaseControl IO m) => ExceptionMonad (MaybeT m) Source # 

Methods

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

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

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

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

(MonadIO m, MonadBaseControl IO m) => ExceptionMonad (GmlT m) Source # 

Methods

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

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

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

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

(MonadIO m, MonadBaseControl IO m) => ExceptionMonad (GmT m) Source # 

Methods

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

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

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

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

(MonadIO m, MonadBaseControl IO m) => ExceptionMonad (GmOutT m) Source # 

Methods

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

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

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

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

(Monoid w, MonadIO m, MonadBaseControl IO m) => ExceptionMonad (JournalT w m) Source # 

Methods

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

gmask :: ((JournalT w m a -> JournalT w m a) -> JournalT w m b) -> JournalT w m b #

gbracket :: JournalT w m a -> (a -> JournalT w m b) -> (a -> JournalT w m c) -> JournalT w m c #

gfinally :: JournalT w m a -> JournalT w m b -> JournalT w m a #

(MonadIO m, MonadBaseControl IO 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 #

(MonadIO m, MonadBaseControl IO m) => ExceptionMonad (ReaderT * s m) Source # 

Methods

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

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

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

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