| Date: Tue, 4 Jan 2005 18:21:49 -0800 (PST)
| From: bear <xxxxxx@sonic.net>
|
| On Tue, 4 Jan 2005, Bradd W. Szonye wrote:
|
| Thus, our 5x4x3x2 array could be written
|
| #5*4*3*2A(...)
| or
| #5*4*3*2A<typespec>(...)
|
| or similar. I think this is better enough in terms of being able
| to express zero-size dimensions, enhanced human-readability and
| maintainability that I wouldn't object to the increased
| verbosity. It is not compatible with the CL prior art, but makes up
| for it by being dog-easy to understand.
It does look readable. There are several variations possible:
#<dim1>*<dim2>*...A (...) #2*3A ((a b c) (d e f))
#<dim1>*<dim2>*...A:<type> (...) #2*3A:fixi-8 ((-1 0 1) (1 0 1))
#A<dim1>*<dim2>*... (...) #A2*3 ((a b c) (d e f))
#A<dim1>*<dim2>*...:<type> (...) #A2*3:fixn-16 ((2 0 1) (5 4 2))
#<rank>A<dim1>*<dim2>*... (...) #2A2*3 ((0 1 2) (d e f))
#<rank>A<dim1>*<dim2>*...:<type> (...) #2A2*3:fixn-8 ((0 1 2) (3 4 5))
#<rank>A (...) #2A ((a b) (c d))
#<rank>A:<type> (...) #2A:fixi-16 ((-1 0) (0 1))
Notice that all but the first example pair are unambiguous with each
other; and Common-Lisp arrays would be compatible when input. For
output, one of the middle forms would be used.
| >Specifying the dimensions also permits a convenient shorthand for
| >repetitive arrays: If there aren't enough elements for a
| >dimension, simply repeat the last element. For example, #100(1) is
| >shorthand for #(1 1 1 1 ... 1)
|
| True that. I think I like this idea better than the current
| proposal.