DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Roger has posted 34 posts at DZone. View Full User Profile

Haskell Radix Coversion

08.31.2010
| 1451 views |
  • submit to reddit
        // converts an integer from base 10 to a string of base x (where 0 > x >= 20)

convertFromDecimal :: Int -> Int -> String -> String
convertFromDecimal num toBase accum
    | toBase < 0 = error "base must be greater than zero"
    | toBase > 20 = error "base must be <= 20"
    | num < 0     = error "number cannot be negative"
    | num == 0 = accum :: String
    | num > 0  = 
        let chars  = "0123456789ABCDEFGHIJ"
            over   = num `mod` toBase
            remain = num `div` toBase
            accum' = (chars !! over) : accum
        in 
            convertFromDecimal remain toBase accum'