Add {-# OPTIONS_GHC -w #-} and some blurb to all compiler modules
[ghc-hetmet.git] / compiler / utils / IOEnv.hs
index 8116eff..d31b078 100644 (file)
@@ -1,8 +1,16 @@
--- (c) The University of Glasgow 2002
+--
+-- (c) The University of Glasgow 2002-2006
 --
 -- The IO Monad with an environment
 --
 
+{-# OPTIONS_GHC -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+--     http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions#Warnings
+-- for details
+
 module IOEnv (
        IOEnv,  -- Instance of Monad
 
@@ -26,9 +34,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 +54,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)