Is there a platform function that will do the following?
convertBase :: (Num a, Num b) => Int -> Int -> [a] -> [b]
Convert a number
Using the digits package from Hackage:
import Data.Digits (digits, unDigits)
convertBase :: Integral a => a -> a -> [a] -> [a]
convertBase from to = digits to . unDigits from
You can add a fromIntegral
in there if you need the input and output types to be different. Also, the Integral
constraint makes more sense than Num
, since you probably don't want to deal with complex or floating-point digits.
Couple of ideas:
Here is a link that might help you: http://rosettacode.org/wiki/Non-decimal_radices/Convert#Haskell -- Non-decimal radices/Convert
The closest thing in the haskell platform is from module Numeric:
readInt :: Num a => a -> (Char -> Bool) -> (Char -> Int) -> ReadS a
showIntAtBase :: Integral a => a -> (Int -> Char) -> a -> ShowS
fromBase :: Int -> String -> Int
fromBase base = fst . head . readInt base ((<base).digitToInt) digitToInt
toBase :: Int -> Int -> String
toBase base num = showIntAtBase base intToDigit num ""
fromBaseToBase :: Int -> Int -> String -> String
fromBaseToBase from to = toBase to . fromBase from