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

Re: ---

   Date: 27-Jan-87 15:05:00
   From: Danny Bobrow <Bobrow.pa@xerox.com>
         A generic-function can    have only one method-combination
         type -- parametrized or not.
       Well that's what is in the standard. I consider this assumption
       being  a simplification of a more general model. I understand that
       we don't want to put the general model in the standard (Size,
       complexity.....) but we can't lock the standard in a mode where
       only the simplistic model can be supported without
   To get other kinds of extensions, one uses the meta-object protocol,
   which in this case consists of defining your own method on
   compute-effective-method.  Since this is called by the system when
   generic function is called with a set of arguments, the only thing it
   can depend on is information from the generic function (and of course
   the argument types).  The issue is whether that information is extracted
   by the system and made an argument of the method, or extracted in the
   method.  I have suggested that extracting it in the method is the
   general way to do it.

I agree with the fact than one can define its own
compute-effective-method, the issue has to do with modularity.
Compute-effective-method has to find the list of all the method that can
be called, find the method combination method, call it to come up with the
code for the effective method.  We need to keep those operations as
independent as possible.  If we supply the information as an argument to
the method combinator, the user writing a method combination method does
not have to worry about how the information was obtained.  Different
implementations of compute-effective-method will be able to call the
same method combinator even if they use different ways to come up with
the method combination method.  It seems more modular and more general
than extracting the information in the method.

Maybe David has some more (convincing?) arguments.