1 -- compiled to produce a 1.3 (whatever that is) Prelude.hi file
5 -- 1.3 extras (I/O is later)
11 -- NO: really builtin (0.20+): trace,
13 (%), numerator, denominator, approxRational,
15 realPart, imagPart, conjugate, mkPolar, cis,
16 polar, magnitude, phase,
18 _appendPS, _breakPS, _concatPS, _dropPS, _dropWhilePS,
19 _filterPS, _foldlPS, _foldrPS, _headPS, _indexPS, _lengthPS,
20 _linesPS, _mapPS, _nilPS, _consPS, _nullPS, _packCBytes,
21 _packCString, _packString, _byteArrayToPS, _psToByteArray,
22 _reversePS, _spanPS, _splitAtPS, _substrPS, _tailPS, _takePS,
23 _takeWhilePS, _unpackPS, _wordsPS, _putPS,
25 (&&), (||), not, otherwise,
26 (^), (^^), appendBin, asTypeOf, atan2, fromIntegral,
27 fromRealFrac, gcd, isAlpha, isAlphanum, isAscii, isControl,
28 isDigit, isLower, isNullBin, isPrint, isSpace, isUpper, lcm,
29 maxChar, maxInt, minChar, minInt, nullBin, subtract, toLower,
30 toUpper, until, fst, snd, id, const, (.), flip, ($),
33 #if defined(__UNBOXED_INSTANCES__)
37 isAscii#, isControl#, isPrint#, isSpace#,
38 isUpper#, isLower#, isAlpha#, isDigit#, isAlphanum#,
42 head, last, tail, init, null, (++), (\\), genericLength,
43 length, (!!), map, filter, partition, {-BUILTIN: foldl,-}
44 foldl1, scanl, scanl1, {-BUILTIN: foldr,-} foldr1, scanr, scanr1,
45 iterate, repeat, cycle, take, drop, splitAt, takeWhile,
46 dropWhile, span, break, lines, words, unlines, unwords, nub,
47 reverse, and, or, any, all, elem, notElem, sum,
48 product, sums, products, maximum, minimum, concat,
49 transpose, zip, zip3, zip4, zip5, zip6, zip7, zipWith,
50 zipWith3, zipWith4, zipWith5, zipWith6, zipWith7, unzip,
51 unzip3, unzip4, unzip5, unzip6, unzip7,
53 array, listArray, (!), bounds, indices, elems, assocs,
54 accumArray, (//), accum, amap, ixmap,
56 reads, shows, show, read, lex, showChar, showString,
57 readParen, showParen, readLitChar, showLitChar, readSigned,
58 showSigned, showSpace__, readDec, showInt, readFloat, showFloat,
59 _showHex, _showRadix, _showDigit, -- non-std
60 _readList, _showList, _truncate, _round, _ceiling, _floor,
62 _readRational, _showRational, -- extras!
64 -- 1.3 I/O stuff from PreludeIO, some *renamed*
113 primIOToIO, ioToPrimIO, -- extra, and very dodgy
115 -- and for foldr/build
120 -- few *Ty(s) imports
121 import TyArray ( Array(..), Assoc(..), _ByteArray )
122 import TyComplex ( Complex(..) )
123 --import Builtin ( trace )
124 import Cls hiding ( String )
126 import PreludeGlaST ( thenStrictlyST, _MutableByteArray, _MutableArray )
127 import PreludePrimIO ( thenPrimIO, returnPrimIO )
149 import PreludeIO renaming ( -- IOError13 to IOError -- can't rename PreludeCore types
150 appendFile13 to appendFile
151 , interact13 to interact
153 , readFile13 to readFile
157 , writeFile13 to writeFile
160 primIOToIO :: PrimIO a -> IO a
161 primIOToIO m = m `thenPrimIO` \ a -> return a
163 ioToPrimIO :: IO a -> PrimIO a
165 = io `thenPrimIO` \ r ->
167 Right a -> returnPrimIO a
168 Left e -> error ("I/O Error (ioToPrimIO): " ++ shows e "\n")
171 -- 1.3 extra functions
173 thenMaybe :: Maybe a -> (a -> Maybe b) -> Maybe b
174 thenMaybe Nothing _ = Nothing
175 thenMaybe (Just x) f = f x
177 curry :: ((a,b) -> c) -> a -> b -> c
178 curry f x y = f (x,y)
180 uncurry :: (a -> b -> c) -> (a,b) -> c
181 uncurry f (x,y) = f x y
184 copy :: Int -> a -> [a]
185 copy n x = take n (repeat x)
187 lookup :: Eq a => [(a,b)] -> a -> Maybe b
188 lookup [] _ = Nothing
189 lookup ((key,val) : rest) x | key == x = Just val
190 | otherwise = lookup rest x