Is there an alternative implementation of the types Word8, Word16, etc. that disallow overflow? For example, currently:

Prelude Word> (fromInteger 256) :: Word8
0

I'd like a type whose constructors disallow this.