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

Re: Some open issues



     Date: Thu, 29 Oct 87 15:59 EST
     From: "David A. Moon" <Moon@scrc-stony-brook.arpa>
     Subject: Re: Some open issues
     
         Date: Thu, 29 Oct 87  08:44:13 CST
         From: Patrick H Dussud <DUSSUD%jenner.csc.ti.com@RELAY.CS.NET>
     
         We said at the Palo Alto meeting (If I remember correctly) that something like 
     
         (defmethod foo ((a c1) (b c2) &key x )
            ...)
     
         would result into a method which lambda list is ((a c1) (b c2) &key x)
         (used for the lambda-list congruence computation),
         and a function which lambda list can be (a b &key x &allow-other-keys).
         It is done so because the generic function check the keywords arguments,
         not the method.
         If what I said is correct, 
     
     It is.
     
     			       the question is: When do we change/generate the
         function's lambda list?  Do we generate the final one during the
         macroexpansion of DEFMETHOD or do we change the lambda-list during the
         execution of (make-instance 'standard-method ...)?
     
     It has to be during the macro expansion of defmethod, since the :function
     initarg to standard-method (although I don't have any documentation that
     says this explicitly) can be a function that has already been compiled
     and can't have its lambda-list mucked with.
I had the same opinion on this. 

     The documentation on 2-53, 2-54 of how to create generic functions and
     methods of your own is pretty unsatisfactory.  It seems like a bit too
     much detail to be covering under make-instance, yet it's not really
     enough detail to cover all of the issues, like what does the lambda-list
     of the :function have to look like?  And what about making ones own
     classes?  I think this stuff may have to move into chapter 3 and become
     documentation sections of their own for classes standard-method,
     standard-class, and standard-generic-function, rather than being
     tucked inside make-instance.

I agree.