-{-# OPTIONS_GHC -XNoImplicitPrelude #-}
+{-# LANGUAGE CPP, NoImplicitPrelude, BangPatterns #-}
+
-----------------------------------------------------------------------------
-- |
-- Module : Prelude
#ifndef __HUGS__
import Control.Monad
import System.IO
-import Text.Read
-import Text.Show
+import System.IO.Error
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 GHC.IO
+-- import GHC.IO.Exception
+import Text.Read
import GHC.Enum
import GHC.Num
import GHC.Real
import GHC.Float
import GHC.Show
-import GHC.Err ( error, undefined )
+import GHC.Err ( undefined )
#endif
#ifdef __HUGS__
#ifndef __HUGS__
infixr 0 $!
+#endif
-- -----------------------------------------------------------------------------
-- Miscellaneous functions
-- | Strict (call-by-value) application, defined in terms of 'seq'.
($!) :: (a -> b) -> a -> b
+#ifdef __GLASGOW_HASKELL__
+f $! x = let !vx = x in f vx -- see #2273
+#elif !defined(__HUGS__)
f $! x = x `seq` f x
#endif