85c6520185a3f7804dfbc3f75bc6120e31897980
[ghc-hetmet.git] / ghc / lib / glaExts / IORef.lhs
1 %
2 % (c) The AQUA Project, Glasgow University, 1994-1996
3 %
4
5 \section[IORef]{Module @IORef@}
6
7 \begin{code}
8 {-# OPTIONS -fno-implicit-prelude #-}
9
10 module IORef (
11         IORef,
12         newIORef,
13         readIORef,
14         writeIORef
15    ) where
16
17 import PrelBase
18 import ArrBase
19 import IOBase
20 import STBase
21 \end{code}
22
23 \begin{code}
24 newtype IORef a = IORef (MutableVar RealWorld a) deriving Eq
25
26 newIORef :: a -> IO (IORef a)
27 newIORef v = stToIO (newVar v) >>= \ var -> return (IORef var)
28
29 readIORef :: IORef a -> IO a
30 readIORef (IORef var) = stToIO (readVar var)
31
32 writeIORef :: IORef a -> a -> IO ()
33 writeIORef (IORef var) v = stToIO (writeVar var v)
34 \end{code}