A sparse array, on the other hand, is a generalization of a (possibly multidimensional) set, whose indices need not be continuous.
One feature of HAC is that one may arbitrarily extend arrays, as sets of indices, with multiple declarations. A dense array can be made sparse by adding indexed instances that break the dense condition.
This example declare collection q with two statements, resulting in a sparsely poplulated (sparse) collection.
Sparse array from declarations:
int q[2][2][2]; int q[1][1][3..3]; // result is sparse
A sparse array can be populated densely by filling in indices to satisfy the dense condition,
Dense array from declarations:
pint q[1..1][0..1][2..3]; pint q[1][1][2..3]; pint q[1][1..1][2..3]; // result is dense
The only constraint is that one cannot re-instantiate an index that has been previously instantiated.