--- (c) The University of Glasgow 2002
+--
+-- (c) The University of Glasgow 2002-2006
--
-- The IO Monad with an environment
--
#include "HsVersions.h"
import Panic ( try, tryUser, tryMost, Exception(..) )
-import DATA_IOREF ( IORef, newIORef, readIORef, writeIORef )
-import UNSAFE_IO ( unsafeInterleaveIO )
-import FIX_IO ( fixIO )
+
+import Data.IORef ( IORef, newIORef, readIORef, writeIORef )
+import System.IO.Unsafe ( unsafeInterleaveIO )
+import System.IO ( fixIO )
----------------------------------------------------------------------
return = returnM
fail s = failM -- Ignore the string
+instance Functor (IOEnv m) where
+ fmap f (IOEnv m) = IOEnv (\ env -> fmap f (m env))
+
returnM :: a -> IOEnv env a
returnM a = IOEnv (\ env -> return a)