| Copyright | (c) The University of Glasgow 2008 | 
|---|---|
| License | see libraries/base/LICENSE | 
| Maintainer | cvs-ghc@haskell.org | 
| Stability | internal | 
| Portability | non-portable (GHC Extensions) | 
| Safe Haskell | Unsafe | 
| Language | Haskell2010 | 
GHC.IORef
Description
The IORef type
Synopsis
- newtype IORef a = IORef (STRef RealWorld a)
- newIORef :: a -> IO (IORef a)
- readIORef :: IORef a -> IO a
- writeIORef :: IORef a -> a -> IO ()
- atomicModifyIORef2Lazy :: IORef a -> (a -> (a, b)) -> IO (a, (a, b))
- atomicModifyIORef2 :: IORef a -> (a -> (a, b)) -> IO (a, (a, b))
- atomicModifyIORefLazy_ :: IORef a -> (a -> a) -> IO (a, a)
- atomicModifyIORef'_ :: IORef a -> (a -> a) -> IO (a, a)
- atomicModifyIORefP :: IORef a -> (a -> (a, b)) -> IO b
- atomicSwapIORef :: IORef a -> a -> IO a
- atomicModifyIORef' :: IORef a -> (a -> (a, b)) -> IO b
Documentation
A mutable variable in the IO monad
writeIORef :: IORef a -> a -> IO () #
Write a new value into an IORef
atomicModifyIORef2Lazy :: IORef a -> (a -> (a, b)) -> IO (a, (a, b)) #
atomicModifyIORef2 :: IORef a -> (a -> (a, b)) -> IO (a, (a, b)) #
atomicModifyIORefLazy_ :: IORef a -> (a -> a) -> IO (a, a) #
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) #
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 #
A version of atomicModifyIORef that forces
 the (pair) result of the function.
atomicSwapIORef :: IORef a -> a -> IO a #
Atomically replace the contents of an IORef, returning
 the old contents.
atomicModifyIORef' :: IORef a -> (a -> (a, b)) -> IO b #
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