[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: octothorpe array syntax; other comments
Do I understand correctly? You mean An array of no elements, whose
every element is an array of N elements?
No. I means a 0*N array.
A 2-dimensional (rank 2) array is *not* the same thing as a vector of
vectors. The implementation is obviously different, but the semantics
are also different, at least when it comes to empty arrays.
Why is this different from or more useful than any other kind of
array of no elements?
If you transpose a 0*N array you get a N*0 array, which is corresponds
to a N-element vector, each of which is empty. Sort-of.
I am aware that you can get such entities as a result in matrix
operations, but I had always (perhaps mistakenly?) regarded them as a
degenerate case not useful for further processing, and so didn't feel
that they needed a source syntax.
It is probably not a high priority to make a nice syntax for degeneate
arrays, as long as we have the #, syntax to fall-back on.
Common Lisp (and APL) also allow rank-0 arrays, which have a single
element. (The total number of elements of an array is the product of
each dimension; if there are no dimensions, the product is 1.) In APL,
a rank-0 array is equivalent to a scalar. Common Lisp has the
read/write syntax #0a() for a rank-zero array. A 3*0 array is #a2(() ()
()) while (if I'm reading the HperSpec right) a 0*3 is written #a2(()) -
which is ambiguous.