Copyright | (c) The University of Glasgow 2008 |
---|---|
License | see libraries/base/LICENSE |
Maintainer | [email protected] |
Stability | internal |
Portability | non-portable (GHC Extensions) |
Safe Haskell | Unsafe |
Language | Haskell2010 |
The IORef type
A mutable variable in the IO
monad
newIORef :: a -> IO (IORef a) Source
Build a new IORef
readIORef :: IORef a -> IO a Source
Read the value of an IORef
writeIORef :: IORef a -> a -> IO () Source
Write a new value into an IORef
atomicModifyIORef2Lazy :: IORef a -> (a -> (a, b)) -> IO (a, (a, b)) Source
atomicModifyIORef2 :: IORef a -> (a -> (a, b)) -> IO (a, (a, b)) Source
atomicModifyIORefLazy_ :: IORef a -> (a -> a) -> IO (a, a) Source
Atomically apply a function to the contents of an IORef
and return the old and new values. The result of the function is not forced. As this can lead to a memory leak, it is usually better to use atomicModifyIORef'_
.
atomicModifyIORef'_ :: IORef a -> (a -> a) -> IO (a, a) Source
Atomically apply a function to the contents of an IORef
and return the old and new values. The result of the function is forced.
atomicModifyIORefP :: IORef a -> (a -> (a, b)) -> IO b Source
A version of atomicModifyIORef
that forces the (pair) result of the function.
atomicSwapIORef :: IORef a -> a -> IO a Source
Atomically replace the contents of an IORef
, returning the old contents.
atomicModifyIORef' :: IORef a -> (a -> (a, b)) -> IO b Source
Strict version of atomicModifyIORef
. This forces both the value stored in the IORef
and the value returned. The new value is installed in the IORef
before the returned value is forced. So
atomicModifyIORef' ref (x -> (x+1, undefined))
will increment the IORef
and then throw an exception in the calling thread.
Since: base-4.6.0.0
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.8.3/docs/html/libraries/base-4.13.0.0/GHC-IORef.html