X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Prelude.hs;h=840c2ca5b965bc614966e8038e968e86b1067157;hb=297d7e3e4ce4950125fd4b6e3bff9d7f6afbfbc6;hp=2fb0bafeabe26f2435e2a8ba525079fe613c737b;hpb=5f4a737d076331b7b621e8c02fd0e39ea80af348;p=ghc-base.git diff --git a/Prelude.hs b/Prelude.hs index 2fb0baf..840c2ca 100644 --- a/Prelude.hs +++ b/Prelude.hs @@ -1,4 +1,4 @@ -{-# OPTIONS -fno-implicit-prelude #-} +{-# OPTIONS_GHC -fno-implicit-prelude #-} ----------------------------------------------------------------------------- -- | -- Module : Prelude @@ -6,7 +6,7 @@ -- 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 @@ -17,15 +17,25 @@ module Prelude ( - -- * Basic data types + -- * Standard types, classes and related functions + + -- ** Basic data types Bool(False, True), + (&&), (||), not, otherwise, + Maybe(Nothing, Just), + maybe, + Either(Left, Right), + either, + Ordering(LT, EQ, GT), - Char, String, Int, Integer, Float, Double, IO, - Rational, -#if defined(__GLASGOW_HASKELL__) || defined(__NHC__) - -- Restore export of (:) until we get to 5.05 + Char, String, + + -- *** Tuples + fst, snd, curry, uncurry, + +#if defined(__NHC__) []((:), []), -- Not legal Haskell 98; -- ... available through built-in syntax module Data.Tuple, -- Includes tuple types @@ -36,14 +46,20 @@ module Prelude ( (:), -- Not legal Haskell 98 #endif - -- * Basic type classes + -- ** Basic type classes Eq((==), (/=)), Ord(compare, (<), (<=), (>=), (>), max, min), Enum(succ, pred, toEnum, fromEnum, enumFrom, enumFromThen, enumFromTo, enumFromThenTo), Bounded(minBound, maxBound), - -- * Numeric type classes + -- ** Numbers + + -- *** Numeric types + Int, Integer, Float, Double, + Rational, + + -- *** Numeric type classes Num((+), (-), (*), negate, abs, signum, fromInteger), Real(toRational), Integral(quot, rem, div, mod, quotRem, divMod, toInteger), @@ -55,50 +71,75 @@ module Prelude ( encodeFloat, exponent, significand, scaleFloat, isNaN, isInfinite, isDenormalized, isIEEE, isNegativeZero, atan2), + -- *** Numeric functions + subtract, even, odd, gcd, lcm, (^), (^^), + fromIntegral, realToFrac, + + -- ** Monads and functors + Monad((>>=), (>>), return, fail), + Functor(fmap), + mapM, mapM_, sequence, sequence_, (=<<), + + -- ** Miscellaneous functions + id, const, (.), flip, ($), until, + asTypeOf, error, undefined, + seq, ($!), + -- * List operations - map, (++), filter, concat, + map, (++), filter, head, last, tail, init, null, length, (!!), - foldl, foldl1, scanl, scanl1, foldr, foldr1, scanr, scanr1, + reverse, + -- ** Reducing lists (folds) + foldl, foldl1, foldr, foldr1, + -- *** Special folds + and, or, any, all, + sum, product, + concat, concatMap, + maximum, minimum, + -- ** Building lists + -- *** Scans + scanl, scanl1, scanr, scanr1, + -- *** Infinite lists iterate, repeat, replicate, cycle, + -- ** Sublists take, drop, splitAt, takeWhile, dropWhile, span, break, - reverse, and, or, - any, all, elem, notElem, lookup, - maximum, minimum, concatMap, + -- ** Searching lists + elem, notElem, lookup, + -- ** Zipping and unzipping lists zip, zip3, zipWith, zipWith3, unzip, unzip3, - + -- ** Functions on strings lines, words, unlines, unwords, - sum, product, -- * Converting to and from @String@ - ReadS, ShowS, - Read(readsPrec, readList), + -- ** Converting to @String@ + ShowS, 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, - -- * Simple I\/O operations - ioError, userError, catch, - FilePath, IOError, + -- * 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. + -- For example, two characters of input, return and linefeed, may + -- read as a single newline character. These functions cannot be + -- used portably for binary I/O. + -- *** Output functions putChar, putStr, putStrLn, print, + -- *** Input functions getChar, getLine, getContents, interact, + -- *** Files + FilePath, readFile, writeFile, appendFile, readIO, readLn, - - -- * Monads - Monad((>>=), (>>), return, fail), - Functor(fmap), - mapM, mapM_, sequence, sequence_, (=<<), - - -- * Miscellaneous functions - maybe, either, - (&&), (||), not, otherwise, - subtract, even, odd, gcd, lcm, (^), (^^), - fromIntegral, realToFrac, - fst, snd, curry, uncurry, - id, const, (.), flip, ($), until, - asTypeOf, error, undefined, - seq, ($!) + -- ** Exception handling in the I\/O monad + IOError, ioError, userError, catch ) where @@ -112,6 +153,8 @@ import Data.Either import Data.Maybe import Data.Bool import Data.Tuple +import Data.Eq +import Data.Ord #endif #ifdef __GLASGOW_HASKELL__ @@ -124,7 +167,6 @@ import GHC.Num import GHC.Real import GHC.Float import GHC.Show -import GHC.Conc import GHC.Err ( error, undefined ) #endif @@ -135,11 +177,18 @@ import Hugs.Prelude #ifndef __HUGS__ infixr 0 $! - -- ----------------------------------------------------------------------------- -- Miscellaneous functions +-- | Strict (call-by-value) application, defined in terms of 'seq'. ($!) :: (a -> b) -> a -> b 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