
Hello Malcolm On 2014-08-10 at 10:07:42 +0200, Malcolm Wallace wrote:
[...] I believe the use of unknown-precision Word to represent non-negative integers was the winning justification, but it remains controversial in the same way that Int (rather than Int32, or Integer) does. Lack of clarity over whether or when a number overflows is a pretty bad downside. Pragmatically, it may work OK for most people most of the time. But the Haskell way is to prefer correctness.
Btw, were there ever any discussions or plans to introduce "checked" Int/Word types into the Haskell Report? As well as efficient dynamically (or even statically) checked fromIntegral conversions (c.f. [1])? I.e. 'Int'/'Word' types (whose bit-width has some degree of freedom as you point out) whose 'Num' operations would throw appropriate `ArithException`s if the result over/underflows the type domain (c.f. [2]) [1]: I plan to bring this up at some later point as part of an effort to provide Haskell with statically accessible range meta-info about bounded integral types (something like a promoted `Bounded` typeclass), as right now it seems one has to resort to type-level hackery such as http://hackage.haskell.org/package/int-cast-0.1.1.0/docs/Data-IntCast.html to achieve what I have in mind. [2]: http://hackage.haskell.org/package/safeint Cheers, hvr