(Previous discussion continued) | ||
Re: octothorpe array syntax; other comments | Per Bothner | 14 Nov 2003 22:11 UTC |
Re: octothorpe array syntax; other comments Per Bothner 14 Nov 2003 22:11 UTC
bear wrote: > 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. -- --Per Bothner xxxxxx@bothner.com http://per.bothner.com/