[project @ 2002-04-26 13:34:05 by simonmar]
[ghc-base.git] / Control / Monad / Fix.hs
index d09afc1..1122588 100644 (file)
@@ -1,6 +1,5 @@
-{-# OPTIONS -fno-implicit-prelude #-}
 -----------------------------------------------------------------------------
--- 
+-- |
 -- Module      :  Control.Monad.Fix
 -- Copyright   :  (c) Andy Gill 2001,
 --               (c) Oregon Graduate Institute of Science and Technology, 2001
@@ -10,8 +9,6 @@
 -- Stability   :  experimental
 -- Portability :  portable
 --
--- $Id: Fix.hs,v 1.2 2001/07/03 11:37:49 simonmar Exp $
---
 -- The Fix monad.
 --
 --       Inspired by the paper:
@@ -29,13 +26,8 @@ module Control.Monad.Fix (
        fix     -- :: (a -> a) -> a
   ) where
 
-#ifdef __GLASGOW_HASKELL__
--- MonadFix is needed by System.IO, so it is below the Prelude.
-import Control.Monad
-import GHC.Base
-import GHC.Err
-import Data.Maybe
-#endif
+import Prelude
+import System.IO
 
 fix :: (a -> a) -> a
 fix f = let x = f x in x
@@ -43,10 +35,13 @@ fix f = let x = f x in x
 class (Monad m) => MonadFix m where
        mfix :: (a -> m a) -> m a
 
--- Perhaps these should live beside (the ST & IO) definition.
 instance MonadFix Maybe where
        mfix f = let
                a = f $ case a of
                        Just x -> x
                        _      -> error "empty mfix argument"
                in a
+
+instance MonadFix IO where
+       mfix = fixIO
+