[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:

   #+(OR TI ...) ; implementations that I happen to know accept this

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