projects
/
ghc-base.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove an unnecessary import
[ghc-base.git]
/
GHC
/
Num.lhs
diff --git
a/GHC/Num.lhs
b/GHC/Num.lhs
index
5f3f865
..
2981e60
100644
(file)
--- a/
GHC/Num.lhs
+++ b/
GHC/Num.lhs
@@
-1,5
+1,5
@@
\begin{code}
\begin{code}
-{-# OPTIONS_GHC -fno-implicit-prelude #-}
+{-# OPTIONS_GHC -XNoImplicitPrelude #-}
{-# OPTIONS_HADDOCK hide #-}
-----------------------------------------------------------------------------
-- |
{-# OPTIONS_HADDOCK hide #-}
-----------------------------------------------------------------------------
-- |
@@
-134,12
+134,7
@@
instance Ord Integer where
(>) = gtInteger
(<) = ltInteger
(>=) = geInteger
(>) = gtInteger
(<) = ltInteger
(>=) = geInteger
-
- i `compare` j = case i `compareInteger` j of
- -1# -> LT
- 0# -> EQ
- 1# -> GT
- _ -> error "compareInteger: Bad result"
+ compare = compareInteger
\end{code}
\end{code}
@@
-161,9
+156,9
@@
instance Show Integer where
-- Divide an conquer implementation of string conversion
integerToString :: Integer -> String -> String
-- Divide an conquer implementation of string conversion
integerToString :: Integer -> String -> String
-integerToString n cs
- | n < 0 = '-' : integerToString' (-n) cs
- | otherwise = integerToString' n cs
+integerToString n0 cs0
+ | n0 < 0 = '-' : integerToString' (- n0) cs0
+ | otherwise = integerToString' n0 cs0
where
integerToString' :: Integer -> String -> String
integerToString' n cs
where
integerToString' :: Integer -> String -> String
integerToString' n cs
@@
-186,9
+181,10
@@
integerToString n cs
(# q, r #) ->
if q > 0 then fromInteger q : fromInteger r : jsplitb p ns
else fromInteger r : jsplitb p ns
(# q, r #) ->
if q > 0 then fromInteger q : fromInteger r : jsplitb p ns
else fromInteger r : jsplitb p ns
+ jsplith _ [] = error "jsplith: []"
jsplitb :: Integer -> [Integer] -> [Integer]
jsplitb :: Integer -> [Integer] -> [Integer]
- jsplitb p [] = []
+ jsplitb _ [] = []
jsplitb p (n:ns) = case n `quotRemInteger` p of
(# q, r #) ->
q : r : jsplitb p ns
jsplitb p (n:ns) = case n `quotRemInteger` p of
(# q, r #) ->
q : r : jsplitb p ns
@@
-204,6
+200,7
@@
integerToString n cs
r = fromInteger r'
in if q > 0 then jhead q $ jblock r $ jprintb ns cs
else jhead r $ jprintb ns cs
r = fromInteger r'
in if q > 0 then jhead q $ jblock r $ jprintb ns cs
else jhead r $ jprintb ns cs
+ jprinth [] _ = error "jprinth []"
jprintb :: [Integer] -> String -> String
jprintb [] cs = cs
jprintb :: [Integer] -> String -> String
jprintb [] cs = cs
@@
-287,36
+284,45
@@
instance Enum Integer where
#-}
enumDeltaIntegerFB :: (Integer -> b -> b) -> Integer -> Integer -> b
#-}
enumDeltaIntegerFB :: (Integer -> b -> b) -> Integer -> Integer -> b
-enumDeltaIntegerFB c x d = x `c` enumDeltaIntegerFB c (x+d) d
+enumDeltaIntegerFB c x d = x `seq` (x `c` enumDeltaIntegerFB c (x+d) d)
enumDeltaInteger :: Integer -> Integer -> [Integer]
enumDeltaInteger :: Integer -> Integer -> [Integer]
-enumDeltaInteger x d = x : enumDeltaInteger (x+d) d
+enumDeltaInteger x d = x `seq` (x : enumDeltaInteger (x+d) d)
+-- strict accumulator, so
+-- head (drop 1000000 [1 .. ]
+-- works
+enumDeltaToIntegerFB :: (Integer -> a -> a) -> a
+ -> Integer -> Integer -> Integer -> a
enumDeltaToIntegerFB c n x delta lim
| delta >= 0 = up_fb c n x delta lim
| otherwise = dn_fb c n x delta lim
enumDeltaToIntegerFB c n x delta lim
| delta >= 0 = up_fb c n x delta lim
| otherwise = dn_fb c n x delta lim
+enumDeltaToInteger :: Integer -> Integer -> Integer -> [Integer]
enumDeltaToInteger x delta lim
| delta >= 0 = up_list x delta lim
| otherwise = dn_list x delta lim
enumDeltaToInteger x delta lim
| delta >= 0 = up_list x delta lim
| otherwise = dn_list x delta lim
-up_fb c n x delta lim = go (x::Integer)
+up_fb :: (Integer -> a -> a) -> a -> Integer -> Integer -> Integer -> a
+up_fb c n x0 delta lim = go (x0 :: Integer)
where
go x | x > lim = n
| otherwise = x `c` go (x+delta)
where
go x | x > lim = n
| otherwise = x `c` go (x+delta)
-dn_fb c n x delta lim = go (x::Integer)
+dn_fb :: (Integer -> a -> a) -> a -> Integer -> Integer -> Integer -> a
+dn_fb c n x0 delta lim = go (x0 :: Integer)
where
go x | x < lim = n
| otherwise = x `c` go (x+delta)
where
go x | x < lim = n
| otherwise = x `c` go (x+delta)
-up_list x delta lim = go (x::Integer)
+up_list :: Integer -> Integer -> Integer -> [Integer]
+up_list x0 delta lim = go (x0 :: Integer)
where
go x | x > lim = []
| otherwise = x : go (x+delta)
where
go x | x > lim = []
| otherwise = x : go (x+delta)
-dn_list x delta lim = go (x::Integer)
+dn_list :: Integer -> Integer -> Integer -> [Integer]
+dn_list x0 delta lim = go (x0 :: Integer)
where
go x | x < lim = []
| otherwise = x : go (x+delta)
where
go x | x < lim = []
| otherwise = x : go (x+delta)
-
\end{code}
\end{code}