[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

dependent update protocol



    Date: Wed, 20 Apr 88 10:00 PDT
    From: Gregor.pa@Xerox.COM

	Date: Mon, 11 Apr 88 15:50 EDT
	From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>

	Also, since the style you propose depends on three methods for three different
	generic functions to be kept in sync, and does something unpredictable without
	necessarily signalling an error if one of the methods is left out, it doesn't
	seem very robust.  I would prefer to see either a more abstract data structure
	than a list, so that leaving out a method (or forgetting to call cdr) for one
	class would not damage the data seen by other class's methods, or else to use
	one generic function instead of three, so that all the code for one class would
	be in a single place and hence less likely to be out of sync.  In the latter
	case, this generic function would be called multiple times and one of its
	arguments would indicate whether state was being collected or
	distributed.

    I think these might be good ideas.  Unfortunately, in the abscence of a
    specific proposal for how to make this work I think we are going to make
    only the two changes described in this message.  We don't have the time
    to figure out how to incorporate this comment given that what we have
    will clearly work.

And will clearly break if misused.  Here's an idea: someone, I forget
who, suggested using a property list as the state that's passed around,
instead of letting each class's methods decide how they are going to
encapsulate the next class's state.  If you do that, then methods
getting out of sync cannot cause any damage.  The only way for one class
to damage another would be for both to use the same property name, but
the property names can be class objects.

Let me know if this is not a specific enough proposal and I'll somehow,
I don't know how, find the time to write it up more clearly.