This page is part of the web mail archives of SRFI 58 from before July 7th, 2015. The new archives for SRFI 58 contain all messages, not just those from before July 7th, 2015.
On Thu, 30 Dec 2004, Aubrey Jaffer wrote: >In the updated srfi-58.html I sent to the editor I have eliminated the >#Axxx syntax. The rank digit(s) will be required. My own preference would be something like [3 instead of #A3( making the bracket-number combination (without a separating space) a token that means "start an array of this numerical order." Scheme makes parentheses separating characters, but brackets, officially, are not parentheses. I think openbracket immediately followed by a number is a much nicer (more succinct) way to indicate array rank. You could extend it for Uniform arrays, if you wanted: [3u8 would mean "start a rank 3 array of 8-bit unsigned integers." it's two fewer characters every time an array is used, and the symbols are visually simpler. I think that's important, actually. > | > | So, for example, the two-by-two array of unsigned 16-bit integers from > | > | the document might be written as #,(ARRAY 2 u16 (0 1) (2 3)). or as [2u16 [ 0 1][ 2 3]] . This treats openbrace as a non-delimiter character (allowing rank, etc, prefixes to be appended) and close brace as a delimiter. > | > | General object arrays' types would be OBJECT (so #(FOO 1 #T ()) > | > | could also be written #,(ARRAY OBJECT FOO 1 #T ())) Or as [ FOO 1 #T '() ] > | > and character > | > | arrays' types would be CHAR (so "foo" could alternatively be > | > | written #,(ARRAY CHAR #\f #\o #\o)). I don't think that "string" as a misspelling of "character array" is consistent with the modern universe of character sets and encodings. I think that [c #\f #\o #\o ] should be a different entity than "foo." >English doesn't much help remember Scheme exponent markers: > > The letters `s', `f', `d', and `l' specify the use of SHORT, SINGLE, > DOUBLE, and LONG precision, respectively. > >I don't usually think of a DOUBLE as shorter than a LONG. And where >did `f' for SINGLE come from? Maybe it is a C-ism. In any case, it >is one of five characters (with 'e') rather than one of five longer >sequences to remember. Actually, scheme exponent markers other than default-precision 'e' are 's' 'f' 'd' and 'l', for 'short', 'float', 'double', and 'long', which only makes sense if you are a C programmer. The idea with C was that these names would be distributed among the hardware float types available, such that they are a nondecreasing sequence in precision, although some precisions may be known by more than one name. Unfortunately, rather than actually carry through with the plan, most C compilers now treat 'double' and 'long' as identical precisions, while introducing new tokens, 'long long' or 'extended' to denote even bigger precisions. Personally, I think this is a wart in scheme numeric syntax; these are properly about exactness and belong with the exactness prefix, not in the exponent marker. Bear