[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: first part of mop
Date: Fri, 9 Sep 88 10:28:02 PDT
From: Patrick Dussud <dussud@lucid.com>
I find the general contents quite good. I have few comments:
Thank you, I am glad to hear it.
Do you intent to keep the description of the metaobjects like this, and then
present the accessors, in alphabetic order, one per page, or do you intend to
list them right were you describe the metaobjects?
Personally, I lean toward the latter approach:
-All of the accessors have several properties in common: The user cannot alter
the information returned by the accessors (lists of objects). The users cannot
rely on when and how may times, the system will call these accessors, and so
on.
-Their semantics are trivial. they just return some data from the objects. We
don't need a whole page each time to say that.
I plan to do something like this, and for precisely the reasons you
mention. I plan to put the protocol specification and the standard
protocol implementation specification in different places. I plan to
group related methods like these to make it simple to talk about
properties they have in common. For example, there is a principle that
says (something like) you can't override less than all of a set of
methods which share memory.
I do plan to leave the overview stuff where it is up front. I realize
that this is just a specification, but I feel that the 2.5 pages it
takes up are worth it to provide that kind of summary of the
interconnections among metaobjects.
I was surprised by the principle 8 (pg 3-8). Since we say that slots for these
objects are internal business, I don't see why we should restrict the domain
of their names. The user shouldn't even try to find out their names.
This principle may need debugging, but its reason for existing is to let
me know that the following code is sure to work in any implementation:
(in-package 'user)
(defclass foo (standard-class) (foo bar baz))
A reasonable question to ask is should we also make this code legal:
(in-package 'user)
(defclass bar (standard-class) (list car +))
I agree with the principles exposed here. Maybe you should emphasize the
distinction between the protocol specification, and the standard
implementation of the metaobject protocol, by saying that they will belong in
different parts of chapter 3.
Yes, this is what I plan.
-------