Note, for instance, the problem of buffer overruns. But there is another problem with arrays that is addressed by ATS, which is NOT addressed widely otherwise: aliasing. The problem of entries in arrays being aliased, because it is easy to refer to an array in two place.
ATS solves both problems by making an array a linear type that is typechecked via a āviewā. A view has a particular length in entry types. The entry type can be changed, and so the length with that, but let us ignore that.