ghc-8.0.0.20160204: The GHC API

Safe HaskellNone
LanguageHaskell2010

IOEnv

Synopsis

Documentation

data IOEnv env a Source

Instances

Monad (IOEnv m) 

Methods

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

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

return :: a -> IOEnv m a Source

fail :: String -> IOEnv m a Source

Functor (IOEnv m) 

Methods

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

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

MonadFail (IOEnv m) 

Methods

fail :: String -> IOEnv m a Source

Applicative (IOEnv m) 

Methods

pure :: a -> IOEnv m a Source

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

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

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

MonadIO (IOEnv env) 

Methods

liftIO :: IO a -> IOEnv env a Source

MonadPlus IO => Alternative (IOEnv env) 

Methods

empty :: IOEnv env a Source

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

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

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

MonadPlus IO => MonadPlus (IOEnv env) 

Methods

mzero :: IOEnv env a Source

mplus :: IOEnv env a -> IOEnv env a -> IOEnv env a Source

ExceptionMonad (IOEnv a) 

Methods

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

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

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

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

ContainsModule env => HasModule (IOEnv env) 
ContainsDynFlags env => HasDynFlags (IOEnv env) 

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

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

data IORef a :: TYPE Lifted -> TYPE Lifted Source

A mutable variable in the IO monad

Instances

Eq (IORef a) 

Methods

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

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

newMutVar :: a -> IOEnv env (IORef 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.