2 % (c) The AQUA Project, Glasgow University, 1994-1996
5 \section[IOExts]{Module @IOExts@}
8 {-# OPTIONS -fno-implicit-prelude #-}
16 -- instance Eq (IORef a)
22 -- instance Eq (IOArray ix a)
45 import PrelHandle ( openFileEx, IOModeEx(..) )
52 reallyUnsafePtrEq a b =
53 case reallyUnsafePtrEquality# a b of
59 newtype IORef a = IORef (MutableVar RealWorld a)
62 newIORef :: a -> IO (IORef a)
63 newIORef v = stToIO (newVar v) >>= \ var -> return (IORef var)
65 readIORef :: IORef a -> IO a
66 readIORef (IORef var) = stToIO (readVar var)
68 writeIORef :: IORef a -> a -> IO ()
69 writeIORef (IORef var) v = stToIO (writeVar var v)
73 newtype IOArray ix elt = IOArray (MutableArray RealWorld ix elt)
76 newIOArray :: Ix ix => (ix,ix) -> elt -> IO (IOArray ix elt)
77 boundsIOArray :: Ix ix => IOArray ix elt -> (ix, ix)
78 readIOArray :: Ix ix => IOArray ix elt -> ix -> IO elt
79 writeIOArray :: Ix ix => IOArray ix elt -> ix -> elt -> IO ()
80 freezeIOArray :: Ix ix => IOArray ix elt -> IO (Array ix elt)
83 stToIO (newArray ixs elt) >>= \arr ->
86 boundsIOArray (IOArray arr) = boundsOfArray arr
88 readIOArray (IOArray arr) ix = stToIO (readArray arr ix)
90 writeIOArray (IOArray arr) ix elt = stToIO (writeArray arr ix elt)
92 freezeIOArray (IOArray arr) = stToIO (freezeArray arr)
96 setEcho :: Handle -> Bool -> IO ()
99 getEcho :: Handle -> IO Bool