Calculate bounds correctly for mutable arrays

Avoid allocation of very long Haskell arrays when evaluating mutable arrays
of length 0. `0-1=upperbound` for unsigned types, in this case `Length`.