# Re: user interface macros

• To: Dussud@Lucid.com, Gray@Lucid.com, JonL@Lucid.com, RPG@Lucid.com, Moon@Stony-Brook.SCRC.Symbolics.com, Cyphers@Stony-Brook.SCRC.Symbolics.com, jkf@franz.com, paepcke@hplap.hpl.hp.com, jutta@ztivax.siemens.com, "Gregor J. Kiczales" <gregor@parc.xerox.com>
• Subject: Re: user interface macros
• From: Danny Bobrow <bobrow@parc.xerox.com>
• Date: Tue, 24 Apr 90 17:16:33 -0700 (PDT)
• Cc: rivieres@parc.xerox.com, bobrow@parc.xerox.com, gregor@parc.xerox.com
• References: <19900424043758.2.GREGOR@SPIFF.parc.xerox.com>
• Resent-date: Thu, 26 Apr 90 17:34 PDT
• Resent-from: Gregor J. Kiczales <gregor@parc.xerox.com>
• Resent-message-id: <19900427003451.9.GREGOR@SPIFF.parc.xerox.com>
• Resent-to: mop-archive@arisia.Xerox.COM

"The only exception is that the function {\bf ensure-generic-function}
will be called and generic function metaobjects
will be created during compiler processing of {\bf defmethod} and {\bf
defgeneric} macros.  This is discussed in the section Processing
Method Bodies''."

Later you say that the information used will be that IN EFFECT  on
the generic function at the time the method is defined.  But when
compiling a file, you may be changing the generic function  (e.g.
changing the set of required arguments).   Don't we need to be explicit
about what is in effect, and what is inherited from the run-time.

"\beginNote Canonicalized slot specifications are called a property list and
strictly speaking they are.  Later, when the canonicalized slot
specification is used it will be used as keyword arguments and values to a
generic function which will, in turn, pass it to {\bf make-instance} for
use as a set of initialization arguments and values.
\endNote"

A suggested rewording

\beginNote A canonicalized slot specification is a property list.  It
will be used as keyword arguments to a generic function which will, in
turn, pass them to {\bf make-instance} for use as a set of
initialization arguments. \endNote

----
WORD MISSING:
The value specified by an {\bf :accessor} slot option is <<A>> two
element list:
-----

In Figure 3-2 the defclass expansion, in one case you reverse the order
of elements with the same slot-option name
and in the other you don't
:locator '(sst-mach mach-location)
Should this be specified?
----

"The {\bf :lambda-list} keyword argument is supplied in the call, its
value is the lambda list of the method reduced to a generic function
lambda list."

"reduced to a g-f lambda-list"  is not defined here or in Chapter 1 or
2.  If a method has a keyword argument, is that keyword one included in
the generic function lambda-list?  In the example on page 3-8, not only
is there no  &key color, but there is not even the &key in the
lambda-list in the call to the ensure-generic-function.

e" and also to mean "write a file that can later be loaded
and will produce similar objects."  You'll know you've got it right when
the specification does not admit any difference between EVAL and calling
the result of COMPILE.  You're concerned with the case of one Lisp or
concerned with whether the representation of Lisp programs is
S-expressions or machine code.  I suggest eliminating all use of the
word "compile" except in the compound form "compile-file."

-3

":lambda-list '(p l)" looks wrong.  Shouldn't it be
":lambda-list '(p l &optional (visibly t) &key color)" ?

Drop the quote marks before "':qualifiers" etc. to be consistent with
figure 3-2.

In the caption: Delete "the" in "...are the additional initargs..."