Indeed, as Dan says, theres the safeint library and the Integer type.
If the Int type had either of these semantics by default, many many performance sensitive libraries would suddenly have substantially less compelling performance. Every single operation that was branchless before would have a branch *every* operation..... this would be BAD.
I'm actually quite happy with (ab)using Int as just a sequence of bits that sometimes i treat as a number, and sometimes i treat as a bitvector. In fact thats actually most of my work these days. GHC generates VERY nice code for Ints and Words, similar to what i'd expect to be Generated by a decent C compiler when not explicitly using SIMD operations. This is a good thing!
point being: its easy to have the safety with SafeInt, or Using Integer, and fast inner loops can't have branches, and that actually matters in many applications.
cheers
-Carter