projects
/
ghc-base.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix suseconds configure test on Windows
[ghc-base.git]
/
Prelude.hs
diff --git
a/Prelude.hs
b/Prelude.hs
index
08fe811
..
4c183ae
100644
(file)
--- a/
Prelude.hs
+++ b/
Prelude.hs
@@
-1,4
+1,5
@@
-{-# OPTIONS -fno-implicit-prelude #-}
+{-# LANGUAGE CPP, NoImplicitPrelude, BangPatterns #-}
+
-----------------------------------------------------------------------------
-- |
-- Module : Prelude
-----------------------------------------------------------------------------
-- |
-- Module : Prelude
@@
-6,7
+7,7
@@
-- License : BSD-style (see the file libraries/base/LICENSE)
--
-- Maintainer : libraries@haskell.org
-- License : BSD-style (see the file libraries/base/LICENSE)
--
-- Maintainer : libraries@haskell.org
--- Stability : provisional
+-- Stability : stable
-- Portability : portable
--
-- The Prelude: a standard module imported by default into all Haskell
-- Portability : portable
--
-- The Prelude: a standard module imported by default into all Haskell
@@
-31,22
+32,21
@@
module Prelude (
Ordering(LT, EQ, GT),
Char, String,
Ordering(LT, EQ, GT),
Char, String,
- IO,
-- *** Tuples
fst, snd, curry, uncurry,
#if defined(__NHC__)
-- *** Tuples
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__
#endif
#ifdef __HUGS__
- (:), -- Not legal Haskell 98
+ (:), -- Not legal Haskell 98
#endif
#endif
-
+
-- ** Basic type classes
Eq((==), (/=)),
Ord(compare, (<), (<=), (>=), (>), max, min),
-- ** Basic type classes
Eq((==), (/=)),
Ord(compare, (<), (<=), (>=), (>), max, min),
@@
-73,7
+73,7
@@
module Prelude (
isInfinite, isDenormalized, isIEEE, isNegativeZero, atan2),
-- *** Numeric functions
isInfinite, isDenormalized, isIEEE, isNegativeZero, atan2),
-- *** Numeric functions
- subtract, even, odd, gcd, lcm, (^), (^^),
+ subtract, even, odd, gcd, lcm, (^), (^^),
fromIntegral, realToFrac,
-- ** Monads and functors
fromIntegral, realToFrac,
-- ** Monads and functors
@@
-88,7
+88,7
@@
module Prelude (
-- * List operations
map, (++), filter,
-- * List operations
map, (++), filter,
- head, last, tail, init, null, length, (!!),
+ head, last, tail, init, null, length, (!!),
reverse,
-- ** Reducing lists (folds)
foldl, foldl1, foldr, foldr1,
reverse,
-- ** Reducing lists (folds)
foldl, foldl1, foldr, foldr1,
@@
-112,13
+112,18
@@
module Prelude (
lines, words, unlines, unwords,
-- * Converting to and from @String@
lines, words, unlines, unwords,
-- * Converting to and from @String@
- ReadS, ShowS,
- Read(readsPrec, readList),
+ -- ** Converting to @String@
+ ShowS,
Show(showsPrec, showList, show),
Show(showsPrec, showList, show),
- reads, shows, read, lex,
- showChar, showString, readParen, showParen,
-
+ shows,
+ showChar, showString, showParen,
+ -- ** Converting from @String@
+ ReadS,
+ Read(readsPrec, readList),
+ reads, readParen, read, lex,
+
-- * Basic Input and output
-- * Basic Input and output
+ IO,
-- ** Simple I\/O operations
-- All I/O functions defined here are character oriented. The
-- treatment of the newline character will vary on different systems.
-- ** Simple I\/O operations
-- All I/O functions defined here are character oriented. The
-- treatment of the newline character will vary on different systems.
@@
-142,26
+147,24
@@
module Prelude (
#ifndef __HUGS__
import Control.Monad
import System.IO
#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.List
import Data.Either
import Data.Maybe
-import Data.Bool
import Data.Tuple
#endif
#ifdef __GLASGOW_HASKELL__
import GHC.Base
import Data.Tuple
#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.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__
#endif
#ifdef __HUGS__
@@
-170,12
+173,23
@@
import Hugs.Prelude
#ifndef __HUGS__
infixr 0 $!
#ifndef __HUGS__
infixr 0 $!
-
+#endif
-- -----------------------------------------------------------------------------
-- Miscellaneous functions
-- -----------------------------------------------------------------------------
-- Miscellaneous functions
+-- | Strict (call-by-value) application, defined in terms of 'seq'.
($!) :: (a -> b) -> a -> b
($!) :: (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
f $! x = x `seq` f x
#endif
+#ifdef __HADDOCK__
+-- | The value of @'seq' a b@ is bottom if @a@ is bottom, and otherwise
+-- equal to @b@. 'seq' is usually introduced to improve performance by
+-- avoiding unneeded laziness.
+seq :: a -> b -> b
+seq _ y = y
+#endif