[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CLOS comments
Comments on section 2 of the "Common Lisp Object System Specification"
(X3J13 document 88-002 dated March 1988):
Functionality comments:
-----------------------
DEFCLASS needs to permit a slot option of the form:
(:DOCUMENTATION doc-string)
Any implementation would be permitted to ignore this, but the
standard should recommend that the specified doc-string should become the
value to be returned by the DOCUMENTATION function for any reader methods
created for the slot by the :READER or :ACCESSOR options.
I recognize that an implementation is already permitted to support this as
an extension, but since the use of documentation should be encouraged
rather than made more difficult, I think it is unacceptable to require
users to write code that looks like this:
...
(:READER FOO)
#+(OR TI ...) ; implementations that I happen to know accept this
(:DOCUMENTATION "...")
...
when it is trivial for an implementation to just ignore the option if it
doesn't wish to support it.
It is not apparent why GENERIC-FUNCTION needs to be a special form instead
of a macro.
The CLOS standard should specify that implementations which support it
should include the symbol :CLOS in their *FEATURES* list.
Editorial comments:
-------------------
On page 2-8, the description "... of the form S or of the form S*" is a
little confusing because S is not defined.
I think it would be helpful if locally defined macros and functions (such
as CALL-METHOD and CALL-NEXT-METHOD) had a syntax line that said "Local
Macro" or "Local Function" instead of just "Macro" or "Function".
On page 2-25, third paragraph, the sentence "The slot name argument is a
symbol that can be used as a Common Lisp variable name." is confusing. It
seems to be saying that the name becomes defined such that it can be
accessed just like a variable (as in flavors), but this is only true
through the use of WITH-SLOTS, which is not mentioned here. Probably what
was intended was that the slot name must satisfy the same syntactic
requirements as a variable name, i.e. a symbol which is not a keyword,
nil, or t.
-- David Gray, Texas Instruments