| Haskell Hierarchical Libraries (base package) | Source code | Contents | Index
Data.IORef |
Portability | portable
Stability | experimental
Maintainer | libraries@haskell.org
Contents
IORefs
Description
Mutable references in the IO monad.
Synopsis
data IORef a
newIORef :: a -> IO (IORef a)
readIORef :: IORef a -> IO a
writeIORef :: IORef a -> a -> IO ()
modifyIORef :: IORef a -> (a -> a) -> IO ()
atomicModifyIORef :: IORef a -> (a -> (a, b)) -> IO b
mkWeakIORef :: IORef a -> IO () -> IO (Weak (IORef a))
IORefs
data IORef a
A mutable variable in the `IO` monad
Instances
Typeable1 IORef
Typeable a => Data (IORef a)
Eq (IORef a)
newIORef :: a -> IO (IORef a)
Build a new `IORef`
readIORef :: IORef a -> IO a
Read the value of an `IORef`
writeIORef :: IORef a -> a -> IO ()
Write a new value into an `IORef`
modifyIORef :: IORef a -> (a -> a) -> IO ()
Mutate the contents of an `IORef`
atomicModifyIORef :: IORef a -> (a -> (a, b)) -> IO b
Atomically modifies the contents of an `IORef`. This function is useful for using `IORef` in a safe way in a multithreaded program. If you only have one `IORef`, then using `atomicModifyIORef` to access and modify it will prevent race conditions. Extending the atomicity to multiple `IORef`s is problematic, so it is recommended that if you need to do anything more complicated then using `MVar` instead is a good idea.
mkWeakIORef :: IORef a -> IO () -> IO (Weak (IORef a))
Make a `Weak` pointer to an `IORef`
Produced by Haddock version 0.8