The problem is that, when I run it with strings containing a number
more then 10 digit long, I get unexpected integers back:

*Main> runP number1 "1234567890 and the rest"
[(1234567890," and the rest")]
*Main> runP number1 "12345678901 and the rest"
[(-539222987," and the rest")]

This has nothing to do with your parser, but with the representation
you use. The Int type is bounded by

Prelude> maxBound :: Int
2147483647

i.e. that's the highest value of Int you could get. So if you just write

Prelude> 12345678901 :: Int
-539222987

you see that you have the same "problem". The solution is to use the
unbounded type Integer instead of the bounded type Int.

Cheers,

/Niklas
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to