On 11-Apr-06, at 3:32 PM, Taylor R. Campbell wrote:
Are these symbols? Keywords? A wholly new, disjoint type of data? I can't find this in the specification; there's only a brief remark about it in the section on implementation, but this is very important since these are otherwise ill-defined data in S-expressions.
Good point.The only requirement is that #!optional, #!key and #!rest be distinct objects (i.e. not eqv? to anything else). The #!foo syntax adopted by DSSSL is probably inspired from the R2RS which had the #!true, #! false, and #!null syntax for true, false and the empty list. Some Scheme systems still use the #!foo syntax for some objects (Gambit and Chez Scheme use #!eof to denote the end-of-file object).
Marc