2 % (c) The AQUA Project, Glasgow University, 1994-1996
4 \section[MutVar]{Mutable variables}
6 Mutable variables, for the @IO@ monad.
14 newVar, -- :: a -> IO (MutVar a)
15 readVar, -- :: MutVar a -> IO a
16 writeVar, -- :: MutVar a -> a -> IO ()
17 sameVar -- :: MutVar a -> MutVar a -> Bool
22 import qualified ArrBase
23 import IOBase ( IO , stToIO )
24 import GHC (RealWorld)
30 newtype MutVar a = MutVar (ArrBase.MutableVar RealWorld a)
32 newVar :: a -> IO (MutVar a)
33 newVar v = stToIO (ST.newVar v) >>= \ var -> return (MutVar var)
35 readVar :: MutVar a -> IO a
36 readVar (MutVar var) = stToIO (ST.readVar var)
38 writeVar :: MutVar a -> a -> IO ()
39 writeVar (MutVar var) v = stToIO (ST.writeVar var v)
41 sameVar :: MutVar a -> MutVar a -> Bool
42 sameVar (MutVar var1) (MutVar var2) = ST.sameVar var1 var2