diff --git a/ghc/lib/exts/NumExts.lhs b/ghc/lib/exts/NumExts.lhs index b3c4fe905165935dad2bdb42f2e04dd2a06beebb..77968f42544891a0e454cc4cb0833456be7208fc 100644 --- a/ghc/lib/exts/NumExts.lhs +++ b/ghc/lib/exts/NumExts.lhs @@ -10,8 +10,17 @@ module NumExts ( doubleToFloat -- :: Double -> Float , floatToDouble -- :: Double -> Float + , showHex -- :: Integral a => a -> ShowS , showOct -- :: Integral a => a -> ShowS + , showBin -- :: Integral a => a -> ShowS + + -- general purpose number->string converter. + , showIntAtBase -- :: Integral a + -- => a -- base + -- -> (a -> Char) -- digit to char + -- -> a -- number to show. + -- -> ShowS ) where import Char (ord, chr) @@ -77,4 +86,10 @@ showOct n r = showString "0o" $ showIntAtBase 8 (toChrOct) n r where toChrOct d = chr (ord_0 + fromIntegral d) + +showBin :: Integral a => a -> ShowS +showBin n r = + showString "0b" $ + showIntAtBase 2 (toChrOct) n r + where toChrOct d = chr (ord_0 + fromIntegral d) \end{code}