import Outputable
import qualified ErrUtils as Err
-import MonadUtils
import Maybes
import UniqSupply
import Data.IORef
import Data.Word
import Control.Monad
-import Control.Applicative
import Prelude hiding ( read )
-- For use if the user has imported Control.Monad.Error from MTL
-- Requires UndecidableInstances
-#if __GLASGOW_HASKELL__ > 606
--- see instance MonadPlus IOEnv
instance MonadPlus IO => MonadPlus CoreM where
mzero = CoreM (const mzero)
m `mplus` n = CoreM (\rs -> unCoreM m rs `mplus` unCoreM n rs)
-#endif
instance MonadUnique CoreM where
getUniqueSupplyM = do