[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: should allow empty arrays

Jussi Piitulainen wrote:

Per Bothner writes:

The lower bound b and the upper bound e of a dimension are exact
integers with |(<= b e)|.

This should be (<= b (- e 1)) if you believe in APL, which has
"always" allowed 0-element arrays. So does Common Lisp. I think we
should too,

We do. The upper bound is excluded from the dimension, same as the
arguments to substring in R5RS.

Sorry - I skimmed too fast.

That representation is unfortuantely not very common and it might be
confusing.  Other languages that allow arbitrary lower bounds generally
use an upper bound that is *inclusive* - think Fortran, Pascal, Ada, Algol.
Languages that use an exclusive upper bound generally hard-wire the
lower bound to 0, so the upper bound is actually the length.

That is why I think (lower-bound, length) might be less confusing,
though I agree compatibility with substring is an argument in favor
of the exclusive-lower-bound convention.