On Mon, 2 Aug 2004, Bruno Haible wrote:
> In SBCL 0.8.11,
> (defclass foo009 () ((:a :initarg :a)))
> (defclass foo012 () ((t :initarg :t)))
> give an error. The justification appears to be the sentence in CLHS:
> "The slot-name argument is a symbol that is syntactically valid for
> use as a variable name."
> However when you look at 126.96.36.199.1, you can see that keywords and other
> constants also count as "variables", but not as "non-constant variables".
> So the defclass forms above IMO should not give an error.
I'm going to dispute this.
Taking 188.8.131.52.1 in play here we should disallow symbol-macros as slot
names, as they are there distinguished from variables. That doesn't sound
like the intention of the spec, given the use of the word _syntactically_.
Quite the opposite, symbols naming symbol-macros should be valid slot
names (and are, in SBCL at least).
If constants, symbol-macro names, and "normal symbols" are all allowed,
what else does there remain for the restriction to refer to?
-- Nikodemus Schemer: "Buddha is small, clean, and serious."
Lispnik: "Buddha is big, has hairy armpits, and laughs."