[project @ 2002-09-13 18:25:07 by panne]
[ghc-base.git] / Prelude.hs
index b833edb..2d0fe96 100644 (file)
 module Prelude (
 
     -- * Basic data types
-    Bool(..),
-    Maybe(..),
-    Either(..),
-    Ordering(..), 
+    Bool(False, True),
+    Maybe(Nothing, Just),
+    Either(Left, Right),
+    Ordering(LT, EQ, GT),
     Char, String, Int, Integer, Float, Double, IO,
     Rational,
-    []((:), []),
-    
-    module Data.Tuple,
-        -- Includes tuple types + fst, snd, curry, uncurry
-    ()(..),            -- The unit type
-    (->),              -- functions
+#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(..), 
-    Enum(..),
-    Bounded(..), 
-    Num(..),
-    Real(..),
-    Integral(..),
-    Fractional(..),
-    Floating(..),
-    RealFrac(..),
-    RealFloat(..),
+    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,
@@ -75,8 +85,8 @@ module Prelude (
     readFile, writeFile, appendFile, readIO, readLn,
 
     -- * Monads
-    Monad(..),
-    Functor(..), 
+    Monad((>>=), (>>), return, fail),
+    Functor(fmap),
     mapM, mapM_, sequence, sequence_, (=<<),
 
     -- * Miscellaneous functions
@@ -84,13 +94,14 @@ module Prelude (
     (&&), (||), not, otherwise,
     subtract, even, odd, gcd, lcm, (^), (^^), 
     fromIntegral, realToFrac,
-    --exported by Data.Tuple: 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
@@ -100,6 +111,7 @@ import Data.Either
 import Data.Maybe
 import Data.Bool
 import Data.Tuple
+#endif
 
 #ifdef __GLASGOW_HASKELL__
 import GHC.Base
@@ -115,6 +127,11 @@ import GHC.Conc
 import GHC.Err   ( error, undefined )
 #endif
 
+#ifdef __HUGS__
+import Hugs.Prelude
+#endif
+
+#ifndef __HUGS__
 infixr 0 $!
 
 
@@ -123,5 +140,5 @@ infixr 0 $!
 
 ($!)    :: (a -> b) -> a -> b
 f $! x  = x `seq` f x
-
+#endif