1 {-# OPTIONS_GHC -fno-implicit-prelude #-}
2 -----------------------------------------------------------------------------
5 -- Copyright : (c) The University of Glasgow 2001
6 -- License : BSD-style (see the file libraries/base/LICENSE)
8 -- Maintainer : libraries@haskell.org
10 -- Portability : portable
12 -- The Prelude: a standard module imported by default into all Haskell
13 -- modules. For more documentation, see the Haskell 98 Report
14 -- <http://www.haskell.org/onlinereport/>.
16 -----------------------------------------------------------------------------
20 -- * Standard types, classes and related functions
22 -- ** Basic data types
24 (&&), (||), not, otherwise,
36 fst, snd, curry, uncurry,
39 []((:), []), -- Not legal Haskell 98;
40 -- ... available through built-in syntax
41 module Data.Tuple, -- Includes tuple types
42 ()(..), -- Not legal Haskell 98
43 (->), -- ... available through built-in syntax
46 (:), -- Not legal Haskell 98
49 -- ** Basic type classes
51 Ord(compare, (<), (<=), (>=), (>), max, min),
52 Enum(succ, pred, toEnum, fromEnum, enumFrom, enumFromThen,
53 enumFromTo, enumFromThenTo),
54 Bounded(minBound, maxBound),
59 Int, Integer, Float, Double,
62 -- *** Numeric type classes
63 Num((+), (-), (*), negate, abs, signum, fromInteger),
65 Integral(quot, rem, div, mod, quotRem, divMod, toInteger),
66 Fractional((/), recip, fromRational),
67 Floating(pi, exp, log, sqrt, (**), logBase, sin, cos, tan,
68 asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh),
69 RealFrac(properFraction, truncate, round, ceiling, floor),
70 RealFloat(floatRadix, floatDigits, floatRange, decodeFloat,
71 encodeFloat, exponent, significand, scaleFloat, isNaN,
72 isInfinite, isDenormalized, isIEEE, isNegativeZero, atan2),
74 -- *** Numeric functions
75 subtract, even, odd, gcd, lcm, (^), (^^),
76 fromIntegral, realToFrac,
78 -- ** Monads and functors
79 Monad((>>=), (>>), return, fail),
81 mapM, mapM_, sequence, sequence_, (=<<),
83 #ifdef __GLASGOW_HASKELL__
88 -- ** Miscellaneous functions
89 id, const, (.), flip, ($), until,
90 asTypeOf, error, undefined,
95 head, last, tail, init, null, length, (!!),
97 -- ** Reducing lists (folds)
98 foldl, foldl1, foldr, foldr1,
106 scanl, scanl1, scanr, scanr1,
107 -- *** Infinite lists
108 iterate, repeat, replicate, cycle,
110 take, drop, splitAt, takeWhile, dropWhile, span, break,
111 -- ** Searching lists
112 elem, notElem, lookup,
113 -- ** Zipping and unzipping lists
114 zip, zip3, zipWith, zipWith3, unzip, unzip3,
115 -- ** Functions on strings
116 lines, words, unlines, unwords,
118 -- * Converting to and from @String@
119 -- ** Converting to @String@
121 Show(showsPrec, showList, show),
123 showChar, showString, showParen,
124 -- ** Converting from @String@
126 Read(readsPrec, readList),
127 reads, readParen, read, lex,
129 -- * Basic Input and output
131 -- ** Simple I\/O operations
132 -- All I/O functions defined here are character oriented. The
133 -- treatment of the newline character will vary on different systems.
134 -- For example, two characters of input, return and linefeed, may
135 -- read as a single newline character. These functions cannot be
136 -- used portably for binary I/O.
137 -- *** Output functions
139 putStr, putStrLn, print,
140 -- *** Input functions
142 getLine, getContents, interact,
145 readFile, writeFile, appendFile, readIO, readLn,
146 -- ** Exception handling in the I\/O monad
147 IOError, ioError, userError, catch
165 #ifdef __GLASGOW_HASKELL__
175 import GHC.Err ( error, undefined )
185 -- -----------------------------------------------------------------------------
186 -- Miscellaneous functions
188 -- | Strict (call-by-value) application, defined in terms of 'seq'.
189 ($!) :: (a -> b) -> a -> b
194 -- | The value of @'seq' a b@ is bottom if @a@ is bottom, and otherwise
195 -- equal to @b@. 'seq' is usually introduced to improve performance by
196 -- avoiding unneeded laziness.