X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Prelude.hs;h=050da0487c10b4c5f12fbe703a95a464dff515d0;hb=b205b53b0078599aa77d9afc759aa333c1f565a1;hp=7126561b798b03c174d108ce85c184832e6a3fb6;hpb=335499c628c1cf5749aab9dc8158cb3a3b42cdde;p=ghc-base.git diff --git a/Prelude.hs b/Prelude.hs index 7126561..050da04 100644 --- a/Prelude.hs +++ b/Prelude.hs @@ -1,4 +1,4 @@ -{-# OPTIONS_GHC -fno-implicit-prelude #-} +{-# OPTIONS_GHC -XNoImplicitPrelude #-} ----------------------------------------------------------------------------- -- | -- Module : Prelude @@ -36,16 +36,16 @@ module Prelude ( fst, snd, curry, uncurry, #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 + []((:), []), -- 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 + (:), -- Not legal Haskell 98 #endif - + -- ** Basic type classes Eq((==), (/=)), Ord(compare, (<), (<=), (>=), (>), max, min), @@ -72,7 +72,7 @@ module Prelude ( isInfinite, isDenormalized, isIEEE, isNegativeZero, atan2), -- *** Numeric functions - subtract, even, odd, gcd, lcm, (^), (^^), + subtract, even, odd, gcd, lcm, (^), (^^), fromIntegral, realToFrac, -- ** Monads and functors @@ -80,11 +80,6 @@ module Prelude ( Functor(fmap), mapM, mapM_, sequence, sequence_, (=<<), -#ifdef __GLASGOW_HASKELL__ - -- ** String class - IsString(fromString), -#endif - -- ** Miscellaneous functions id, const, (.), flip, ($), until, asTypeOf, error, undefined, @@ -92,7 +87,7 @@ module Prelude ( -- * List operations map, (++), filter, - head, last, tail, init, null, length, (!!), + head, last, tail, init, null, length, (!!), reverse, -- ** Reducing lists (folds) foldl, foldl1, foldr, foldr1, @@ -124,8 +119,8 @@ module Prelude ( -- ** Converting from @String@ ReadS, Read(readsPrec, readList), - reads, readParen, read, lex, - + reads, readParen, read, lex, + -- * Basic Input and output IO, -- ** Simple I\/O operations @@ -151,22 +146,17 @@ module Prelude ( #ifndef __HUGS__ import Control.Monad import System.IO -import Text.Read -import Text.Show import Data.List import Data.Either import Data.Maybe -import Data.Bool import Data.Tuple -import Data.Eq -import Data.Ord #endif #ifdef __GLASGOW_HASKELL__ import GHC.Base import GHC.IOBase -import GHC.Exception -import GHC.Read +import GHC.Exception ( throw ) +import Text.Read import GHC.Enum import GHC.Num import GHC.Real @@ -175,6 +165,10 @@ import GHC.Show import GHC.Err ( error, undefined ) #endif +#ifndef __HUGS__ +import qualified Control.Exception.Base as New (catch) +#endif + #ifdef __HUGS__ import Hugs.Prelude #endif @@ -197,3 +191,26 @@ f $! x = x `seq` f x seq :: a -> b -> b seq _ y = y #endif + +#ifndef __HUGS__ +-- | The 'catch' function establishes a handler that receives any 'IOError' +-- raised in the action protected by 'catch'. An 'IOError' is caught by +-- the most recent handler established by 'catch'. These handlers are +-- not selective: all 'IOError's are caught. Exception propagation +-- must be explicitly provided in a handler by re-raising any unwanted +-- exceptions. For example, in +-- +-- > f = catch g (\e -> if IO.isEOFError e then return [] else ioError e) +-- +-- the function @f@ returns @[]@ when an end-of-file exception +-- (cf. 'System.IO.Error.isEOFError') occurs in @g@; otherwise, the +-- exception is propagated to the next outer handler. +-- +-- When an exception propagates outside the main program, the Haskell +-- system prints the associated 'IOError' value and exits the program. +-- +-- Non-I\/O exceptions are not caught by this variant; to catch all +-- exceptions, use 'Control.Exception.catch' from "Control.Exception". +catch :: IO a -> (IOError -> IO a) -> IO a +catch = New.catch +#endif /* !__HUGS__ */