ghc-7.10.2: The GHC API

Safe HaskellNone
LanguageHaskell2010

IOEnv

Synopsis

Documentation

data IOEnv env a

module MonadUtils

failM :: IOEnv env a

failWithM :: String -> IOEnv env a

getEnv :: IOEnv env env

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

Perform a computation with a different environment

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

Perform a computation with an altered environment

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

unsafeInterleaveM :: IOEnv env a -> IOEnv env a

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

tryAllM :: IOEnv env r -> IOEnv env (Either SomeException r)

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

data IORef a :: * -> * Source

A mutable variable in the IO monad

Instances

Eq (IORef a) 

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

readMutVar :: IORef a -> IOEnv env a

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

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

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

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

Strict variant of atomicUpdMutVar.