From 009527af27c8ee36a59db4d451e7c7a9896cb1da Mon Sep 17 00:00:00 2001 From: sof Date: Thu, 30 Apr 1998 19:50:18 +0000 Subject: [PATCH] [project @ 1998-04-30 19:50:18 by sof] showInt is only supposed to work on non-negative numbers --- ghc/lib/std/Numeric.lhs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/ghc/lib/std/Numeric.lhs b/ghc/lib/std/Numeric.lhs index 067c672..919e832 100644 --- a/ghc/lib/std/Numeric.lhs +++ b/ghc/lib/std/Numeric.lhs @@ -35,6 +35,7 @@ import PrelMaybe import PrelArr import PrelNum import PrelRead +import PrelErr ( error ) \end{code} @@ -73,13 +74,17 @@ lexDigits :: ReadS String \begin{code} showInt :: Integral a => a -> ShowS showInt n r - = case quotRem n 10 of { (n', d) -> - case chr (ord_0 + fromIntegral d) of { C# c# -> -- stricter than necessary - let + | n < 0 = error "Numeric.showInt: can't show negative numbers" + | otherwise = go n r + where + go n r = + case quotRem n 10 of { (n', d) -> + case chr (ord_0 + fromIntegral d) of { C# c# -> -- stricter than necessary + let r' = C# c# : r - in - if n' == 0 then r' else showInt n' r' - }} + in + if n' == 0 then r' else go n' r' + }} \end{code} Controlling the format and precision of floats. The code that -- 1.7.10.4