X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Numeric.hs;h=4b202d0efd67d0705eceaaba1f45dde6eeb5caf6;hb=be2750a0a11b919fb03cc070074e430f88bdfa90;hp=b9dfce62f56d4581d10f10f3696e3fb596b8f4d5;hpb=10de2c656f74562b662c22928be85e1b3ccda796;p=ghc-base.git diff --git a/Numeric.hs b/Numeric.hs index b9dfce6..4b202d0 100644 --- a/Numeric.hs +++ b/Numeric.hs @@ -1,4 +1,5 @@ -{-# OPTIONS_GHC -XNoImplicitPrelude #-} +{-# LANGUAGE CPP, NoImplicitPrelude, MagicHash #-} + ----------------------------------------------------------------------------- -- | -- Module : Numeric @@ -111,7 +112,7 @@ readFloatP = case tok of L.Rat y -> return (fromRational y) L.Int i -> return (fromInteger i) - other -> pfail + _ -> pfail -- It's turgid to have readSigned work using list comprehensions, -- but it's specified as a ReadS to ReadS transformer @@ -135,9 +136,9 @@ readSigned readPos = readParen False read' -- | Show /non-negative/ 'Integral' numbers in base 10. showInt :: Integral a => a -> ShowS -showInt n cs - | n < 0 = error "Numeric.showInt: can't show negative numbers" - | otherwise = go n cs +showInt n0 cs0 + | n0 < 0 = error "Numeric.showInt: can't show negative numbers" + | otherwise = go n0 cs0 where go n cs | n < 10 = case unsafeChr (ord '0' + fromIntegral n) of @@ -197,10 +198,10 @@ showGFloat d x = showString (formatRealFloat FFGeneric d x) -- | Shows a /non-negative/ 'Integral' number using the base specified by the -- first argument, and the character representation specified by the second. showIntAtBase :: Integral a => a -> (Int -> Char) -> a -> ShowS -showIntAtBase base toChr n r +showIntAtBase base toChr n0 r0 | base <= 1 = error ("Numeric.showIntAtBase: applied to unsupported base " ++ show base) - | n < 0 = error ("Numeric.showIntAtBase: applied to negative number " ++ show n) - | otherwise = showIt (quotRem n base) r + | n0 < 0 = error ("Numeric.showIntAtBase: applied to negative number " ++ show n0) + | otherwise = showIt (quotRem n0 base) r0 where showIt (n,d) r = seq c $ -- stricter than necessary case n of