X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=compiler%2Futils%2FIOEnv.hs;h=d01588f47b6b36f5728dd4451b1d3dba76af5acb;hb=ad94d40948668032189ad22a0ad741ac1f645f50;hp=8116effb331ea2b2c1590ef176d634ccbc34d1aa;hpb=b00b5bc04ff36a551552470060064f0b7d84ca30;p=ghc-hetmet.git diff --git a/compiler/utils/IOEnv.hs b/compiler/utils/IOEnv.hs index 8116eff..d01588f 100644 --- a/compiler/utils/IOEnv.hs +++ b/compiler/utils/IOEnv.hs @@ -1,8 +1,16 @@ --- (c) The University of Glasgow 2002 +-- +-- (c) The University of Glasgow 2002-2006 -- -- The IO Monad with an environment -- +{-# OPTIONS -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/CodingStyle#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)