Tidy up the interface to lookupInstEnv
[ghc-hetmet.git] / compiler / utils / IOEnv.hs
index 8116eff..c72347e 100644 (file)
@@ -1,4 +1,5 @@
--- (c) The University of Glasgow 2002
+--
+-- (c) The University of Glasgow 2002-2006
 --
 -- The IO Monad with an environment
 --
@@ -26,9 +27,10 @@ module IOEnv (
 #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 )
 
 
 ----------------------------------------------------------------------
@@ -45,6 +47,9 @@ instance Monad (IOEnv m) where
   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)