digits :: (Integral a) => a -> [a] digits = flip digits' [] . abs digits' :: (Integral a) => a -> ([a] -> [a]) digits' n = if q == 0 then (r :) else (digits q ++) . (r :) where (q, r) = n `divMod` 10
digits 1234 == [1, 2, 3, 4] digits (-1234) == [1, 2, 3, 4]
Thomas edding
source share