X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Numeric.hs;fp=Numeric.hs;h=bde290df10ee1a196fcc72a1206b3e48192cb67c;hb=16a14a4e9f91677590f15ec97f47b70e1fe50533;hp=d55f9bb8459d8e12939ad1f5e17111c071505487;hpb=4c8456b0aa4f8dd54dd76103685c5bea71feb5d5;p=ghc-base.git diff --git a/Numeric.hs b/Numeric.hs index d55f9bb..bde290d 100644 --- a/Numeric.hs +++ b/Numeric.hs @@ -143,16 +143,17 @@ showGFloat d x = showString (formatRealFloat FFGeneric d x) showIntAtBase :: Integral a => a -> (Int -> Char) -> a -> ShowS showIntAtBase base toChr n r - | n < 0 = error ("Numeric.showIntAtBase: applied to negative number " ++ show n) - | otherwise = - case quotRem n base of { (n', d) -> - let c = toChr (fromIntegral d) in - seq c $ -- stricter than necessary - let - r' = c : r - in - if n' == 0 then r' else showIntAtBase base toChr n' r' - } + | 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 + where + showIt (n,d) r = seq c $ -- stricter than necessary + case n of + 0 -> r' + _ -> showIt (quotRem n base) r' + where + c = toChr (fromIntegral d) + r' = c : r showHex, showOct :: Integral a => a -> ShowS showHex = showIntAtBase 16 intToDigit