X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Flib%2Fstd%2FPrelude.lhs;h=ebe7b82abef57fc29a84e3defccd94524bd77d1d;hb=d9af408e5c512501cfa991f5e4a76c9154bca917;hp=7a09c42dc2e43b1ae6d114422acd21b8a48e824f;hpb=6111556816314236f1f7df84b404e6fbc83e739f;p=ghc-hetmet.git diff --git a/ghc/lib/std/Prelude.lhs b/ghc/lib/std/Prelude.lhs index 7a09c42..ebe7b82 100644 --- a/ghc/lib/std/Prelude.lhs +++ b/ghc/lib/std/Prelude.lhs @@ -1,3 +1,11 @@ +% ------------------------------------------------------------------------------ +% $Id: Prelude.lhs,v 1.26 2001/05/18 16:54:05 simonmar Exp $ +% +% (c) The University of Glasgow, 1992-2000 +% + +\section[Prelude]{Module @Prelude@} + We add the option -fno-implicit-prelude here to tell the reader that special names such as () and -> shouldn't be resolved to Prelude.() and Prelude.-> (as they are normally). -- SDM 8/10/97 @@ -20,10 +28,12 @@ module Prelude ( showChar, showString, readParen, showParen, -- Everything corresponding to the Report's PreludeIO - FilePath, IOError, ioError, userError, catch, - putChar, putStr, putStrLn, print, - getChar, getLine, getContents, interact, + FilePath, IOError, + putChar, + putStr, putStrLn, print, + getChar, + getLine, getContents, interact, readFile, writeFile, appendFile, readIO, readLn, Bool(..), @@ -43,11 +53,9 @@ module Prelude ( Ord(..), Enum(..), Bounded(..), - Num((+), (-), (*), negate, abs, signum, fromInteger), - -- The fromInt method is exposed only by GlaExts + Num(..), Real(..), - Integral(quot, rem, div, mod, quotRem, divMod, toInteger), - -- The toInt method is exposed only by GlaExts + Integral(..), Fractional(..), Floating(..), RealFrac(..), @@ -69,6 +77,8 @@ module Prelude ( ) where +import Monad + import PrelBase import PrelList #ifndef USE_REPORT_PRELUDE @@ -86,9 +96,8 @@ import PrelTup import PrelMaybe import PrelShow import PrelConc -import PrelErr ( error ) +import PrelErr ( error, undefined ) -infixr 1 =<< infixr 0 $! \end{code} @@ -102,13 +111,6 @@ infixr 0 $! \begin{code} ($!) :: (a -> b) -> a -> b f $! x = x `seq` f x - --- It is expected that compilers will recognize this and insert error --- messages which are more appropriate to the context in which undefined --- appears. - -undefined :: a -undefined = error "Prelude.undefined" \end{code} @@ -143,70 +145,3 @@ product l = prod l 1 #endif \end{code} - -%********************************************************* -%* * -\subsection{Prelude monad functions} -%* * -%********************************************************* - -\begin{code} -{-# SPECIALISE (=<<) :: (a -> [b]) -> [a] -> [b] #-} -(=<<) :: Monad m => (a -> m b) -> m a -> m b -f =<< x = x >>= f - -sequence :: Monad m => [m a] -> m [a] -{-# INLINE sequence #-} -sequence ms = foldr k (return []) ms - where - k m m' = do { x <- m; xs <- m'; return (x:xs) } - -sequence_ :: Monad m => [m a] -> m () -{-# INLINE sequence_ #-} -sequence_ ms = foldr (>>) (return ()) ms - -mapM :: Monad m => (a -> m b) -> [a] -> m [b] -{-# INLINE mapM #-} -mapM f as = sequence (map f as) - -mapM_ :: Monad m => (a -> m b) -> [a] -> m () -{-# INLINE mapM_ #-} -mapM_ f as = sequence_ (map f as) -\end{code} - - -%********************************************************* -%* * -\subsection{Coercions} -%* * -%********************************************************* - -\begin{code} -{-# SPECIALIZE fromIntegral :: - Int -> Rational, - Integer -> Rational, - Int -> Int, - Int -> Integer, - Int -> Float, - Int -> Double, - Integer -> Int, - Integer -> Integer, - Integer -> Float, - Integer -> Double #-} -fromIntegral :: (Integral a, Num b) => a -> b -fromIntegral = fromInteger . toInteger - -{-# SPECIALIZE realToFrac :: - Double -> Rational, - Rational -> Double, - Float -> Rational, - Rational -> Float, - Rational -> Rational, - Double -> Double, - Double -> Float, - Float -> Float, - Float -> Double #-} -realToFrac :: (Real a, Fractional b) => a -> b -realToFrac = fromRational . toRational -\end{code} -