[Haskell-cafe] Re: ByteString.pack behavior

Ketil Malde ketil at malde.org
Mon May 19 09:32:03 EDT 2008

Achim Schneider <barsoap at web.de> writes:

>> Nevertheless, a question comes to me - shouldn't compiler report a 
>> warning? 

> While doing that is easy in this case, it becomes quite delicate in the
> general case. More precisely, it grows into the halting problem.

I think it would be nice with a warning when a literal will overflow.

I'd also like run time warnings for overflows, the fact that all the
finite integral types wrap around is often an annoyance.  I believe
that for Int (where the exact precision is unspecified) programs
that wrap will be non-portable.

I wonder if it would be possible to write a debugging Data.Word
library, where you could have something like:

   instance Num Word8 where
        (+) w1 w2 = let (i :: Integer) = fromIntegral w1 + fromIntegral w2
                        (w :: Word8) = w1 Word8.plus w2
                    in if (fromIntegral w /= i) then error ... else w

Then at least it could be used for testing (including QuickCheck) and
lower the probability of overflow and wrap-around.

I suspect that the Num instances are too tightly coupled with the data
definitions to make such a module possible, though.

If I haven't seen further, it is by standing in the footprints of giants

More information about the Haskell-Cafe mailing list