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

Re: octothorpe array syntax; other comments

This page is part of the web mail archives of SRFI 47 from before July 7th, 2015. The new archives for SRFI 47 contain all messages, not just those from before July 7th, 2015.

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
per@xxxxxxxxxxx   http://per.bothner.com/