X-Git-Url: http://git.megacz.com/?p=ghc-base.git;a=blobdiff_plain;f=Prelude.hs;h=4c183ae38c9ad44a22a25c4bba5fa9149066cb62;hp=7126561b798b03c174d108ce85c184832e6a3fb6;hb=HEAD;hpb=335499c628c1cf5749aab9dc8158cb3a3b42cdde diff --git a/Prelude.hs b/Prelude.hs index 7126561..4c183ae 100644 --- a/Prelude.hs +++ b/Prelude.hs @@ -1,4 +1,5 @@ -{-# OPTIONS_GHC -fno-implicit-prelude #-} +{-# LANGUAGE CPP, NoImplicitPrelude, BangPatterns #-} + ----------------------------------------------------------------------------- -- | -- Module : Prelude @@ -36,16 +37,16 @@ module Prelude ( fst, snd, curry, uncurry, #if defined(__NHC__) - []((:), []), -- Not legal Haskell 98; - -- ... available through built-in syntax - module Data.Tuple, -- Includes tuple types - ()(..), -- Not legal Haskell 98 - (->), -- ... available through built-in syntax + []((:), []), -- Not legal Haskell 98; + -- ... available through built-in syntax + module Data.Tuple, -- Includes tuple types + ()(..), -- Not legal Haskell 98 + (->), -- ... available through built-in syntax #endif #ifdef __HUGS__ - (:), -- Not legal Haskell 98 + (:), -- Not legal Haskell 98 #endif - + -- ** Basic type classes Eq((==), (/=)), Ord(compare, (<), (<=), (>=), (>), max, min), @@ -72,7 +73,7 @@ module Prelude ( isInfinite, isDenormalized, isIEEE, isNegativeZero, atan2), -- *** Numeric functions - subtract, even, odd, gcd, lcm, (^), (^^), + subtract, even, odd, gcd, lcm, (^), (^^), fromIntegral, realToFrac, -- ** Monads and functors @@ -80,11 +81,6 @@ module Prelude ( Functor(fmap), mapM, mapM_, sequence, sequence_, (=<<), -#ifdef __GLASGOW_HASKELL__ - -- ** String class - IsString(fromString), -#endif - -- ** Miscellaneous functions id, const, (.), flip, ($), until, asTypeOf, error, undefined, @@ -92,7 +88,7 @@ module Prelude ( -- * List operations map, (++), filter, - head, last, tail, init, null, length, (!!), + head, last, tail, init, null, length, (!!), reverse, -- ** Reducing lists (folds) foldl, foldl1, foldr, foldr1, @@ -124,8 +120,8 @@ module Prelude ( -- ** Converting from @String@ ReadS, Read(readsPrec, readList), - reads, readParen, read, lex, - + reads, readParen, read, lex, + -- * Basic Input and output IO, -- ** Simple I\/O operations @@ -151,28 +147,24 @@ 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__ @@ -181,12 +173,16 @@ import Hugs.Prelude #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