Achim Schneider <[email protected]> wrote:
> Anonymous Anonymous <[email protected]> wrote:
>
> > fromIntToString :: Int -> String
> >
> intOfString = sum . map (uncurry (*)) . zip (map (10^) [0..])
> . map intOfChar . reverse
>
/me hides under a stone and tries again, this time with the correct
problem:
import Data.List
charOfInt :: Int -> Char
charOfInt c | c >= 0 && c <= 9 = toEnum (c + fromEnum '0')
charOfInt _ = undefined
stringOfInt :: Int -> String
stringOfInt =
let f (-1) = Nothing
f n = let (r,c) = n `divMod` 10
in Just $ if r == 0 then (c, (-1)) else (c, r)
in map charOfInt . reverse . unfoldr f
That -1 thing is clearly inelegant, but I don't feel like struggling
with off-by-one errors, right now. Negative numbers are left as an
exercise.
--
(c) this sig last receiving data processing entity. Inspect headers
for copyright history. All rights reserved. Copying, hiring, renting,
performance and/or quoting of this signature prohibited.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe