module PreludeCore (
Integer(..),
- int2Integer,
- _integer_0, _integer_1, _integer_m1
+ __integer0, -- These names must match those in PrelVals.hs
+ __integer1,
+ __integer2,
+ __integerm1
) where
import Cls
import IInt
import IRatio ( (%) )
import ITup2 -- instances
-import List ( (++), foldr )
+import List ( (++), foldr, takeWhile )
import Prel ( not, otherwise, (&&) )
import PS ( _PackedString, _unpackPS )
import Text
+import TyArray
+import TyComplex
------------------------------------------------------
--- a magical Integer-ish function that
--- the compiler inserts references to
+-- useful constants
-int2Integer :: Int -> Integer
-int2Integer (I# i#) = int2Integer# i#
+__integer0, __integer1, __integer2, __integerm1 :: Integer
-------------------------------------------------------
--- some *very* heavily-used constants
-
-_integer_0, _integer_1, _integer_m1 :: Integer
-_integer_0 = 0
-_integer_1 = 1
-_integer_m1 = (-1)
+__integer0 = fromInt 0
+__integer1 = fromInt 1
+__integer2 = fromInt 2
+__integerm1 = fromInt (-1)
------------------------------------------------------
-- ORIG: abs n = if n >= 0 then n else -n
abs n@(J# a1 s1 d1)
- = case _integer_0 of { J# a2 s2 d2 ->
+ = case __integer0 of { J# a2 s2 d2 ->
if (cmpInteger# a1 s1 d1 a2 s2 d2) >=# 0#
then n
else negateInteger# a1 s1 d1
-}
signum n@(J# a1 s1 d1)
- = case _integer_0 of { J# a2 s2 d2 ->
+ = case __integer0 of { J# a2 s2 d2 ->
let
cmp = cmpInteger# a1 s1 d1 a2 s2 d2
in
- if cmp ># 0# then _integer_1
- else if cmp ==# 0# then _integer_0
- else _integer_m1
+ if cmp ># 0# then __integer1
+ else if cmp ==# 0# then __integer0
+ else __integerm1
}
fromInteger x = x
fromInt (I# n#) = int2Integer# n# -- gives back a full-blown Integer
instance Real Integer where
- toRational x = x % 1
+ toRational x = x :% __integer1
instance Integral Integer where
quotRem (J# a1 s1 d1) (J# a2 s2 d2)
n `mod` d = r where (q,r) = divMod n d
divMod n d = case (quotRem n d) of { qr@(q,r) ->
- if signum r == - signum d then (q-1, r+d) else qr }
+ if signum r == - signum d then (q - __integer1, r+d) else qr }
-- Case-ified by WDP 94/10
- even x = (==) (rem x 2) 0
- odd x = (/=) (rem x 2) 0
+ even x = (==) (rem x __integer2) __integer0
+ odd x = (/=) (rem x __integer2) __integer0
instance Ix Integer where
range (m,n) = [m..n]
inRange (m,n) i = m <= i && i <= n
instance Enum Integer where
-{- RAW PRELUDE ************************
- enumFrom = numericEnumFrom
- enumFromThen = numericEnumFromThen
--}
- enumFrom n = n : enumFrom (n + 1)
- enumFromThen m n = en' m (n - m)
- where en' m n = m : en' (m + n) n
-
+ enumFrom n = n : enumFrom (n + __integer1)
+ enumFromThen m n = en' m (n - m)
+ where en' m n = m : en' (m + n) n
+ enumFromTo n m = takeWhile (<= m) (enumFrom n)
+ enumFromThenTo n m p = takeWhile (if m >= n then (<= p) else (>= p))
+ (enumFromThen n m)
instance Text Integer where
readsPrec p x = readSigned readDec x
showsPrec x = showSigned showInt x
+ readList = _readList (readsPrec 0)
+ showList = _showList (showsPrec 0)