ghc-lib-0.20190204: The GHC API, decoupled from GHC versions

Safe HaskellNone
LanguageHaskell2010

IOEnv

Synopsis

Documentation

data IOEnv env a Source #

Instances
Quasi TcM Source # 
Instance details

Defined in TcSplice

Monad (IOEnv m) Source # 
Instance details

Defined in IOEnv

Methods

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

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

return :: a -> IOEnv m a #

fail :: String -> IOEnv m a #

Functor (IOEnv m) Source # 
Instance details

Defined in IOEnv

Methods

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

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

MonadFail (IOEnv m) Source # 
Instance details

Defined in IOEnv

Methods

fail :: String -> IOEnv m a #

Applicative (IOEnv m) Source # 
Instance details

Defined in IOEnv

Methods

pure :: a -> IOEnv m a #

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

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

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

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

MonadIO (IOEnv env) Source # 
Instance details

Defined in IOEnv

Methods

liftIO :: IO a -> IOEnv env a #

Alternative (IOEnv env) Source # 
Instance details

Defined in IOEnv

Methods

empty :: IOEnv env a #

(<|>) :: IOEnv env a -> IOEnv env a -> IOEnv env a #

some :: IOEnv env a -> IOEnv env [a] #

many :: IOEnv env a -> IOEnv env [a] #

MonadPlus (IOEnv env) Source # 
Instance details

Defined in IOEnv

Methods

mzero :: IOEnv env a #

mplus :: IOEnv env a -> IOEnv env a -> IOEnv env a #

ExceptionMonad (IOEnv a) Source # 
Instance details

Defined in IOEnv

Methods

gcatch :: Exception e => IOEnv a a0 -> (e -> IOEnv a a0) -> IOEnv a a0 Source #

gmask :: ((IOEnv a a0 -> IOEnv a a0) -> IOEnv a b) -> IOEnv a b Source #

gbracket :: IOEnv a a0 -> (a0 -> IOEnv a b) -> (a0 -> IOEnv a c) -> IOEnv a c Source #

gfinally :: IOEnv a a0 -> IOEnv a b -> IOEnv a a0 Source #

MonadUnique (IOEnv (Env gbl lcl)) Source # 
Instance details

Defined in TcRnMonad

ContainsModule env => HasModule (IOEnv env) Source # 
Instance details

Defined in IOEnv

Methods

getModule :: IOEnv env Module Source #

ContainsDynFlags env => HasDynFlags (IOEnv env) Source # 
Instance details

Defined in IOEnv

MonadThings (IOEnv (Env TcGblEnv TcLclEnv)) Source # 
Instance details

Defined in TcEnv

MonadThings (IOEnv (Env DsGblEnv DsLclEnv)) Source # 
Instance details

Defined in DsMonad

module MonadUtils

failM :: IOEnv env a Source #

getEnv :: IOEnv env env Source #

setEnv :: env' -> IOEnv env' a -> IOEnv env a Source #

Perform a computation with a different environment

updEnv :: (env -> env') -> IOEnv env' a -> IOEnv env a Source #

Perform a computation with an altered environment

runIOEnv :: env -> IOEnv env a -> IO a Source #

tryM :: IOEnv env r -> IOEnv env (Either IOEnvFailure r) Source #

fixM :: (a -> IOEnv env a) -> IOEnv env a Source #

data IORef a #

A mutable variable in the IO monad

Instances
NFData1 IORef

Since: deepseq-1.4.3.0

Instance details

Defined in Control.DeepSeq

Methods

liftRnf :: (a -> ()) -> IORef a -> () #

Eq (IORef a)

^ Pointer equality.

Since: base-4.1.0.0

Instance details

Defined in GHC.IORef

Methods

(==) :: IORef a -> IORef a -> Bool #

(/=) :: IORef a -> IORef a -> Bool #

NFData (IORef a)

NOTE: Only strict in the reference and not the referenced value.

Since: deepseq-1.4.2.0

Instance details

Defined in Control.DeepSeq

Methods

rnf :: IORef a -> () #

newMutVar :: a -> IOEnv env (IORef a) Source #

readMutVar :: IORef a -> IOEnv env a Source #

writeMutVar :: IORef a -> a -> IOEnv env () Source #

updMutVar :: IORef a -> (a -> a) -> IOEnv env () Source #

atomicUpdMutVar :: IORef a -> (a -> (a, b)) -> IOEnv env b Source #

Atomically update the reference. Does not force the evaluation of the new variable contents. For strict update, use atomicUpdMutVar'.

atomicUpdMutVar' :: IORef a -> (a -> (a, b)) -> IOEnv env b Source #

Strict variant of atomicUpdMutVar.