| ghc-6.12.3: The GHC API | Contents | Index

IOEnv

Synopsis

data IOEnv env a
module MonadUtils
failM :: IOEnv env a
failWithM :: String -> IOEnv env a
data IOEnvFailure = IOEnvFailure
getEnv :: IOEnv env env
setEnv :: env' -> IOEnv env' a -> IOEnv env a
updEnv :: (env -> env') -> IOEnv env' a -> IOEnv env a
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)
tryMostM :: IOEnv env r -> IOEnv env (Either SomeException r)
fixM :: (a -> IOEnv env a) -> IOEnv env a
data 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
atomicUpdMutVar' :: IORef a -> (a -> (a, b)) -> IOEnv env b

Documentation
data IOEnv env a

Instances

Monad (IOEnv m)
Functor (IOEnv m)
MonadPlus IO => MonadPlus (IOEnv env)
Applicative (IOEnv m)
Quasi (IOEnv (Env TcGblEnv TcLclEnv))
MonadIO (IOEnv env)
MonadUnique (IOEnv (Env gbl lcl))
MonadThings (IOEnv (Env TcGblEnv TcLclEnv))
MonadThings (IOEnv (Env DsGblEnv DsLclEnv))

module MonadUtils
failM :: IOEnv env a
failWithM :: String -> IOEnv env a
data IOEnvFailure

Constructors

IOEnvFailure |

Instances

Show IOEnvFailure
Typeable IOEnvFailure
Exception IOEnvFailure

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)
tryMostM :: IOEnv env r -> IOEnv env (Either SomeException r)
fixM :: (a -> IOEnv env a) -> IOEnv env a
data IORef a

A mutable variable in the `IO` monad
Instances

Typeable1 IORef
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`.
Produced by Haddock version 2.6.1