Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.Haskell.GhcMod.Monad.Types
Contents
- type GhcModT m = GmT (GmOutT m)
- newtype GmOutT m a = GmOutT {}
- newtype GmT m a = GmT {
- unGmT :: StateT GhcModState (ErrorT GhcModError (JournalT GhcModLog (ReaderT GhcModEnv m))) a
- newtype GmlT m a = GmlT {}
- newtype LightGhc a = LightGhc {
- unLightGhc :: ReaderT (IORef HscEnv) IO a
- type GmGhc m = (IOish m, GhcMonad m)
- type IOish m = (Functor m, MonadIO m, MonadBaseControl IO m, ExceptionMonad m)
- data GhcModEnv = GhcModEnv {}
- data GhcModState = GhcModState {}
- data GhcModCaches = GhcModCaches {
- gmcPackageDbStack :: CacheContents ChCacheData [GhcPkgDb]
- gmcMergedPkgOptions :: CacheContents ChCacheData [GHCOption]
- gmcComponents :: CacheContents ChCacheData [GmComponent GMCRaw ChEntrypoint]
- gmcResolvedComponents :: CacheContents [GmComponent GMCRaw (Set ModulePath)] (Map ChComponentName (GmComponent GMCResolved (Set ModulePath)))
- defaultGhcModState :: GhcModState
- data GmGhcSession = GmGhcSession {
- gmgsOptions :: ![GHCOption]
- gmgsSession :: !(IORef HscEnv)
- data GmComponent t eps = GmComponent {}
- data GmLogLevel
- data GhcModLog = GhcModLog {
- gmLogLevel :: Maybe GmLogLevel
- gmLogVomitDump :: Last Bool
- gmLogMessages :: [(GmLogLevel, String, Doc)]
- data GhcModError
- = GMENoMsg
- | GMEString String
- | GMECabalConfigure GhcModError
- | GMEStackConfigure GhcModError
- | GMEStackBootstrap GhcModError
- | GMECabalCompAssignment [(Either FilePath ModuleName, Set ChComponentName)]
- | GMEProcess String String [String] (Either Int GhcModError)
- | GMENoCabalFile
- | GMETooManyCabalFiles [FilePath]
- type Gm m = (GmEnv m, GmState m, GmLog m, GmOut m)
- class Monad m => GmEnv m where
- class Monad m => GmState m where
- gmsGet :: m GhcModState
- gmsPut :: GhcModState -> m ()
- gmsState :: (GhcModState -> (a, GhcModState)) -> m a
- class Monad m => GmLog m where
- gmlJournal :: GhcModLog -> m ()
- gmlHistory :: m GhcModLog
- gmlClear :: m ()
- class Monad m => GmOut m where
- cradle :: GmEnv m => m Cradle
- options :: GmEnv m => m Options
- outputOpts :: GmOut m => m OutputOpts
- withOptions :: GmEnv m => (Options -> Options) -> m a -> m a
- getMMappedFiles :: GmState m => m FileMappingMap
- setMMappedFiles :: GmState m => FileMappingMap -> m ()
- addMMappedFile :: GmState m => FilePath -> FileMapping -> m ()
- delMMappedFile :: GmState m => FilePath -> m ()
- lookupMMappedFile :: GmState m => FilePath -> m (Maybe FileMapping)
- getMMappedFilePaths :: GmState m => m [FilePath]
- class MonadIOC m => MonadIO m where
- gmlGetSession :: (MonadIO m, MonadBaseControl IO m) => GmlT m HscEnv
- gmlSetSession :: (MonadIO m, MonadBaseControl IO m) => HscEnv -> GmlT m ()
Monad Types
newtype GmOutT m a
Instances
MonadTrans GmOutT | |
MonadTransControl GmOutT | |
MonadBaseControl IO m => MonadBase IO (GmOutT m) | |
MonadBaseControl IO m => MonadBaseControl IO (GmOutT m) | |
Monad m => Monad (GmOutT m) | |
Functor m => Functor (GmOutT m) | |
Applicative m => Applicative (GmOutT m) | |
Alternative m => Alternative (GmOutT m) | |
MonadPlus m => MonadPlus (GmOutT m) | |
GmEnv m => GmEnv (GmOutT m) | |
GmLog m => GmLog (GmOutT m) | |
Monad m => GmOut (GmOutT m) | |
type StT GmOutT a = StT (ReaderT GhcModEnv) a | |
type StM (GmOutT m) a = StM (ReaderT GhcModEnv m) a |
newtype GmT m a
Constructors
GmT | |
Fields
|
Instances
MonadTrans GmT | |
MonadTransControl GmT | |
MonadBaseControl IO m => MonadBase IO (GmT m) | |
MonadBaseControl IO m => MonadBaseControl IO (GmT m) | |
Monad m => MonadJournal GhcModLog (GmT m) | |
Monad m => MonadError GhcModError (GmT m) | |
MonadReader r m => MonadReader r (GmT m) | |
MonadState s m => MonadState s (GmT m) | |
Monad m => Monad (GmT m) | |
Functor m => Functor (GmT m) | |
Monad m => Applicative (GmT m) | |
Monad m => Alternative (GmT m) | |
Monad m => MonadPlus (GmT m) | |
Monad m => GmEnv (GmT m) | |
Monad m => GmLog (GmT m) | |
GmOut m => GmOut (GmT m) | |
Monad m => GmState (GmT m) | |
type StT GmT a = (Either GhcModError (a, GhcModState), GhcModLog) | |
type StM (GmT m) a = StM (StateT GhcModState (ErrorT GhcModError (JournalT GhcModLog (ReaderT GhcModEnv m)))) a |
newtype GmlT m a
Instances
MonadTrans GmlT | |
MonadTransControl GmlT | |
MonadBaseControl IO m => MonadBase IO (GmlT m) | |
MonadBaseControl IO m => MonadBaseControl IO (GmlT m) | |
Monad m => MonadError GhcModError (GmlT m) | |
Monad m => Monad (GmlT m) | |
Functor m => Functor (GmlT m) | |
Monad m => Applicative (GmlT m) | |
Monad m => Alternative (GmlT m) | |
Monad m => MonadPlus (GmlT m) | |
(Monad m, GmEnv (GhcModT m)) => GmEnv (GmlT m) | |
(Monad m, GmLog (GhcModT m)) => GmLog (GmlT m) | |
Monad m => GmOut (GmlT m) | |
(Monad m, GmState (GhcModT m)) => GmState (GmlT m) | |
type StT GmlT a = StT GmT a | |
type StM (GmlT m) a = StM (GmT m) a |
newtype LightGhc a
type IOish m = (Functor m, MonadIO m, MonadBaseControl IO m, ExceptionMonad m)
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 GhcModState
Constructors
GhcModState | |
Fields
|
Instances
Monad m => GmState (StateT GhcModState m) |
data GhcModCaches
Constructors
data GmGhcSession
Constructors
GmGhcSession | |
Fields
|
data GmComponent t eps
Constructors
GmComponent | |
Fields
|
Instances
Functor (GmComponent t) | |
Eq eps => Eq (GmComponent t eps) | |
Ord eps => Ord (GmComponent t eps) | |
Read eps => Read (GmComponent t eps) | |
Show eps => Show (GmComponent t eps) | |
Generic (GmComponent t eps) | |
Binary eps => Binary (GmComponent t eps) | |
type Rep (GmComponent t eps) |
Accessing GhcModEnv
, GhcModState
and GhcModLog
data GmLogLevel
data GhcModLog
Constructors
GhcModLog | |
Fields
|
data GhcModError
Constructors
GMENoMsg | Unknown error |
GMEString String | Some Error with a message. These are produced mostly by
|
GMECabalConfigure GhcModError | Configuring a cabal project failed. |
GMEStackConfigure GhcModError | Configuring a stack project failed. |
GMEStackBootstrap GhcModError | Bootstrapping |
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. |
Instances
Eq GhcModError | |
Show GhcModError | |
Exception GhcModError | |
Error GhcModError | |
Monad m => MonadError GhcModError (GmlT m) | |
Monad m => MonadError GhcModError (GmT m) | |
GmEnv m => GmEnv (ErrorT GhcModError m) |
class Monad m => GmState m where
Methods
gmsGet :: m GhcModState
gmsPut :: GhcModState -> m ()
gmsState :: (GhcModState -> (a, GhcModState)) -> m a
class Monad m => GmLog m where
Instances
(Monad m, GmLog m) => GmLog (MaybeT m) | |
(Monad m, GmLog (GhcModT m)) => GmLog (GmlT m) | |
Monad m => GmLog (GmT m) | |
GmLog m => GmLog (GmOutT m) | |
Monad m => GmLog (LogDiscardT m) | |
Monad m => GmLog (JournalT GhcModLog m) | |
(Monad m, GmLog m) => GmLog (ReaderT r m) | |
(Monad m, GmLog m) => GmLog (StateT s m) | |
(Monad m, GmLog m, Error e) => GmLog (ErrorT e m) |
outputOpts :: GmOut m => m OutputOpts
withOptions :: GmEnv m => (Options -> Options) -> m a -> m a
getMMappedFiles :: GmState m => m FileMappingMap
setMMappedFiles :: GmState m => FileMappingMap -> m ()
addMMappedFile :: GmState m => FilePath -> FileMapping -> m ()
delMMappedFile :: GmState m => FilePath -> m ()
lookupMMappedFile :: GmState m => FilePath -> m (Maybe FileMapping)
getMMappedFilePaths :: GmState m => m [FilePath]
Re-exporting convenient stuff
gmlGetSession :: (MonadIO m, MonadBaseControl IO m) => GmlT m HscEnv
Get the underlying GHC session
gmlSetSession :: (MonadIO m, MonadBaseControl IO m) => HscEnv -> GmlT m ()
Set the underlying GHC session