On Thu, Apr 2, 2026 at 6:46 AM Peter McGoron <xxxxxx@mcgoron.com> wrote:
> That would also make it so that #0 through #9 are not reserved, which is
> good.
In CL any # construct can be supplied with digits between the # and
the following non-digit: this number is passed to readtable
procedures. For example, `#(1 2 3)` means a vector of length 3, just
as in Scheme, but `#32(1 2 3)` is a vector of length 32 whose first
three elements are initialized to 1, 2, 3, but the remaining elements
are initialized to the last value. Similarly, `#32xface` is
syntactically legal, but is undefined: SBCL ignores it with a warning,
ECL raises a non-continuable exception.
> array-literal ::= "#a" [tag] bounds-or-dim datum
> tag ::= u8 | ... | u64 | s8 | ... | s64 | f32 | f64 | c64 | c128
> bounds-or-dim ::= "(" bound* ")" | integer
> bound ::= integer | "(" integer integer ")"
In my rewrite I'll add that as an issue to be discussed.
> As another thing: the final "format-array" example uses the SRFI 163
> bounds syntax.
I'll add some wording to make clear that what it writes out is merely exemplary.