I think it makes a lot of sense to build arrays from 2 components. One component is the storage. The second component is the array, which is an interpretation of the storage. I think this simplifies slicing and projections.