Converts an integer from base 10 to a string of base x (where 0 > x >= 20). The only thing I'd improve is getting rid of all the calls to error. Perhaps hand back a Maybe String that simply hands back Nothing if unable to convert the number.
- 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
- convertFromDecimal remain toBase accum'
You need to login to post a comment.