There is currently no way to know whether or not calling Data.Bits.bitSize will crash your program.

I propose extending the Bits class to include:

hasBitSize :: Bits b => b -> Bool

such that it returns False for Integer and True for the other instances

since the vast majority of instances are finite, it may be reasonable to set the default definition to

hasBitSize _ = False

Discussion Period: 2 weeks