HORIZON HASKELLDocslts/ghc-9.14.x3e2d5682026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 9.14.1 · lts/ghc-9.14.x · 3e2d568 · 2026-10-11

Moduleghc-9.14.1GHC2021

GHC.Data.IOEnv

The IO Monad with an environment

The environment is passed around as a Reader monad but as its in the IO monad, mutable references can be used for updating state.

  • 3 types
  • 19 values
  • Packageghc-9.14.1
  • Exports22
  • LanguageGHC2021
  • LicenceBSD-3-Clause
  • SourceIOEnv.hs
newtypenewtype IOEnv env a
#
Instances22Quasi, GhcMonad, Monad, Functor, MonadFix, MonadFail, …
valuesetEnv :: env' -> IOEnv env' a -> IOEnv env a
#

Perform a computation with a different environment

valueupdEnv :: (env -> env') -> IOEnv env' a -> IOEnv env a
#

Perform a computation with an altered environment

valueupdEnvIO :: (env -> IO env') -> IOEnv env' a -> IOEnv env a
#

Perform a computation with an altered environment

newtypenewtype IORef a
#

A mutable variable in the IO monad.

Example11 expressions
import GHC.Internal.Data.IORefr <- newIORef 0readIORef r0writeIORef r 1readIORef r1atomicWriteIORef r 2readIORef r2modifyIORef' r (+ 1)readIORef r3atomicModifyIORef' r (\a -> (a + 1, ()))readIORef r4

See also STRef and MVar.

Instances3NFData1, Eq, NFData
  • NFData1 IORefDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Eq (IORef a)Defined in ghc-internal-9.1401.0 · GHC.Internal.IORef

    Pointer equality.

  • NFData (IORef a)Defined in deepseq-1.5.1.0 · Control.DeepSeq

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