FIX #1364: added support for C finalizers that run as soon as the value is no longer...
[ghc-base.git] / Prelude.hs
index 8eb912b..4f01b9f 100644 (file)
@@ -146,22 +146,16 @@ module Prelude (
 #ifndef __HUGS__
 import Control.Monad
 import System.IO
-import Text.Read
-import Text.Show
 import Data.List
 import Data.Either
 import Data.Maybe
-import Data.Bool
 import Data.Tuple
-import Data.Eq
-import Data.Ord
 #endif
 
 #ifdef __GLASGOW_HASKELL__
 import GHC.Base
 import GHC.IOBase
-import GHC.Exception
-import GHC.Read
+import Text.Read
 import GHC.Enum
 import GHC.Num
 import GHC.Real
@@ -170,7 +164,9 @@ import GHC.Show
 import GHC.Err   ( error, undefined )
 #endif
 
-import qualified Control.OldException as Old
+#ifndef __HUGS__
+import qualified Control.Exception.Base as New (catch)
+#endif
 
 #ifdef __HUGS__
 import Hugs.Prelude
@@ -195,6 +191,7 @@ seq :: a -> b -> b
 seq _ y = y
 #endif
 
+#ifndef __HUGS__
 -- | The 'catch' function establishes a handler that receives any 'IOError'
 -- raised in the action protected by 'catch'.  An 'IOError' is caught by
 -- the most recent handler established by 'catch'.  These handlers are
@@ -214,7 +211,5 @@ seq _ y = y
 -- Non-I\/O exceptions are not caught by this variant; to catch all
 -- exceptions, use 'Control.Exception.catch' from "Control.Exception".
 catch :: IO a -> (IOError -> IO a) -> IO a
-catch io handler = io `Old.catch` handler'
-    where handler' (Old.IOException ioe) = handler ioe
-          handler' e                     = throw e
-
+catch = New.catch
+#endif /* !__HUGS__ */