Possible bug/omission in Numeric library?

Karl-Filip Faxen kff@it.kth.se
Wed, 28 Nov 2001 16:48:55 +0100


Hi!

In fact, we might want to be slightly more general. Why don't go for
a general base conversion, much like Malcolms idea but without converting
every digit to a Char. Say something like

   toBase :: (Integral a) => a -> a -> [a]
   toBase base n
      | n < 0     = error "Numeric.toBase: can't convert negative numbers"
      | otherwise = theDigits n []
      where theDigits n r = let (n',d) = quotRem n base
                                r'     = d : r
                            in if n' == 0 then r' else theDigits n' r'

Then the showInt function becomes

    showInt :: (Integral a) => a -> (Int->Char) -> a -> ShowS
    showInt base intToDig n r = foldr (\ i r -> intToDig (fromIntegral i) : r)
                                      r
                                      (toBase base n)

but we can also use toBase by itself. We could also have an analogous 
fromBase, of course.

Cheers,

   /kff