1 We add the option -fno-implicit-prelude here to tell the reader that
2 special names such as () and -> shouldn't be resolved to Prelude.()
3 and Prelude.-> (as they are normally). -- SDM 8/10/97
6 {-# OPTIONS -fno-implicit-prelude #-}
10 -- Everything corresponding to the Report's PreludeList
12 lines, words, unlines, unwords,
15 -- Everything corresponding to the Report's PreludeText
17 Read(readsPrec, readList),
18 Show(showsPrec, showList, show),
19 reads, shows, read, lex,
20 showChar, showString, readParen, showParen,
22 -- Everything corresponding to the Report's PreludeIO
24 ioError, userError, catch,
25 putChar, putStr, putStrLn, print,
26 getChar, getLine, getContents, interact,
27 readFile, writeFile, appendFile, readIO, readLn,
33 Char, String, Int, Integer, Float, Double, IO,
38 -- Includes tuple types + fst, snd, curry, uncurry
39 ()(..), -- The unit type
46 Num((+), (-), (*), negate, abs, signum, fromInteger, fromInt{-glaExt-}),
48 Integral(quot, rem, div, mod, quotRem, divMod, toInteger, toInt{-partain-}),
57 mapM, mapM_, sequence, sequence_, (=<<),
60 (&&), (||), not, otherwise,
61 subtract, even, odd, gcd, lcm, (^), (^^),
62 fromIntegral, realToFrac,
63 --exported by PrelTup: fst, snd, curry, uncurry,
64 id, const, (.), flip, ($), until,
65 asTypeOf, error, undefined,
72 #ifndef USE_REPORT_PRELUDE
73 hiding ( takeUInt_append )
85 import PrelErr ( error )
90 ($!) :: (a -> b) -> a -> b
93 -- It is expected that compilers will recognize this and insert error
94 -- messages which are more appropriate to the context in which undefined
98 undefined = error "Prelude.undefined"
102 List sum and product are defined here because PrelList is too far
103 down the compilation chain to "see" the Num class.
106 -- sum and product compute the sum or product of a finite list of numbers.
107 {-# SPECIALISE sum :: [Int] -> Int #-}
108 {-# SPECIALISE sum :: [Integer] -> Integer #-}
109 {-# SPECIALISE product :: [Int] -> Int #-}
110 {-# SPECIALISE product :: [Integer] -> Integer #-}
111 sum, product :: (Num a) => [a] -> a
112 #ifdef USE_REPORT_PRELUDE
114 product = foldl (*) 1
119 sum' (x:xs) a = sum' xs (a+x)
123 prod (x:xs) a = prod xs (a*x)