[project @ 2002-09-13 18:25:07 by panne]
[ghc-base.git] / Prelude.hs
index 8ee9330..2d0fe96 100644 (file)
@@ -1,25 +1,60 @@
 {-# OPTIONS -fno-implicit-prelude #-}
 -----------------------------------------------------------------------------
--- 
+-- |
 -- Module      :  Prelude
 -- Copyright   :  (c) The University of Glasgow 2001
--- License     :  BSD-style (see the file libraries/core/LICENSE)
+-- License     :  BSD-style (see the file libraries/base/LICENSE)
 -- 
 -- Maintainer  :  libraries@haskell.org
 -- Stability   :  provisional
 -- Portability :  portable
 --
--- $Id: Prelude.hs,v 1.1 2001/06/28 14:15:01 simonmar Exp $
---
--- Standard module imported by default into Haskell modules.
+-- The Prelude: a standard module imported by default into all Haskell
+-- modules.  For more documentation, see the Haskell 98 Report
+-- <http://www.haskell.org/onlinereport/>.
 --
 -----------------------------------------------------------------------------
 
 module Prelude (
 
-       -- List things
-    [] (..),
-
+    -- * Basic data types
+    Bool(False, True),
+    Maybe(Nothing, Just),
+    Either(Left, Right),
+    Ordering(LT, EQ, GT),
+    Char, String, Int, Integer, Float, Double, IO,
+    Rational,
+#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
+#endif
+#ifdef __HUGS__
+    (:),               -- Not legal Haskell 98
+#endif
+    
+    -- * Basic type classes
+    Eq((==), (/=)),
+    Ord(compare, (<), (<=), (>=), (>), max, min),
+    Enum(succ, pred, toEnum, fromEnum, enumFrom, enumFromThen,
+         enumFromTo, enumFromThenTo),
+    Bounded(minBound, maxBound),
+
+    -- * Numeric type classes
+    Num((+), (-), (*), negate, abs, signum, fromInteger),
+    Real(toRational),
+    Integral(quot, rem, div, mod, quotRem, divMod, toInteger),
+    Fractional((/), recip, fromRational),
+    Floating(pi, exp, log, sqrt, (**), logBase, sin, cos, tan,
+             asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh),
+    RealFrac(properFraction, truncate, round, ceiling, floor),
+    RealFloat(floatRadix, floatDigits, floatRange, decodeFloat,
+              encodeFloat, exponent, significand, scaleFloat, isNaN,
+              isInfinite, isDenormalized, isIEEE, isNegativeZero, atan2),
+
+    -- * List operations
     map, (++), filter, concat,
     head, last, tail, init, null, length, (!!), 
     foldl, foldl1, scanl, scanl1, foldr, foldr1, scanr, scanr1,
@@ -33,14 +68,14 @@ module Prelude (
     lines, words, unlines, unwords,
     sum, product,
 
-        -- Everything from Text.Read and Text.Show
+    -- * Converting to and from @String@
     ReadS, ShowS,
     Read(readsPrec, readList),
     Show(showsPrec, showList, show),
     reads, shows, read, lex, 
     showChar, showString, readParen, showParen,
     
-        -- Everything corresponding to the Report's PreludeIO
+    -- * Simple I\/O operations
     ioError, userError, catch,
     FilePath, IOError,
     putChar,
@@ -49,47 +84,24 @@ module Prelude (
     getLine, getContents, interact,
     readFile, writeFile, appendFile, readIO, readLn,
 
-    Bool(..),
-    Maybe(..),
-    Either(..),
-    Ordering(..), 
-    Char, String, Int, Integer, Float, Double, IO,
-    Rational,
-    []((:), []),
-    
-    module GHC.Tup,
-        -- Includes tuple types + fst, snd, curry, uncurry
-    ()(..),            -- The unit type
-    (->),              -- functions
-    
-    Eq(..),
-    Ord(..), 
-    Enum(..),
-    Bounded(..), 
-    Num(..),
-    Real(..),
-    Integral(..),
-    Fractional(..),
-    Floating(..),
-    RealFrac(..),
-    RealFloat(..),
-
-       -- Monad stuff, from GHC.Base, and defined here
-    Monad(..),
-    Functor(..), 
+    -- * Monads
+    Monad((>>=), (>>), return, fail),
+    Functor(fmap),
     mapM, mapM_, sequence, sequence_, (=<<),
 
+    -- * Miscellaneous functions
     maybe, either,
     (&&), (||), not, otherwise,
     subtract, even, odd, gcd, lcm, (^), (^^), 
     fromIntegral, realToFrac,
-    --exported by GHC.Tup: fst, snd, curry, uncurry,
+    fst, snd, curry, uncurry,
     id, const, (.), flip, ($), until,
     asTypeOf, error, undefined,
     seq, ($!)
 
   ) where
 
+#ifndef __HUGS__
 import Control.Monad
 import System.IO
 import Text.Read
@@ -98,6 +110,8 @@ import Data.List
 import Data.Either
 import Data.Maybe
 import Data.Bool
+import Data.Tuple
+#endif
 
 #ifdef __GLASGOW_HASKELL__
 import GHC.Base
@@ -108,12 +122,16 @@ import GHC.Enum
 import GHC.Num
 import GHC.Real
 import GHC.Float
-import GHC.Tup
 import GHC.Show
 import GHC.Conc
 import GHC.Err   ( error, undefined )
 #endif
 
+#ifdef __HUGS__
+import Hugs.Prelude
+#endif
+
+#ifndef __HUGS__
 infixr 0 $!
 
 
@@ -122,5 +140,5 @@ infixr 0 $!
 
 ($!)    :: (a -> b) -> a -> b
 f $! x  = x `seq` f x
-
+#endif