[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: MAKE-METHOD-FUNCTION and APPLY-METHOD
- To: kempf@Sun.COM
- Subject: Re: MAKE-METHOD-FUNCTION and APPLY-METHOD
- From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
- Date: Wed, 13 Apr 88 14:31 EDT
- Cc: common-lisp-object-system@SAIL.STANFORD.EDU
- In-reply-to: <8804131720.AA07908@suntana.sun.com>
Date: Wed, 13 Apr 88 10:20:48 -0700
In order for this to work, none of the functions from the metaobject
protocol can be generic, otherwise the metacircularity doesn't terminate.
So Gregor is correct in this point, and Chapter 3 is incorrect, since
compute-effective-method can't be generic.
But compute-effective-method has to be generic! That's the whole basis of
the meta-objectification of method combination. If this is another
non-terminating circularity, then it's another defect in the meta-circular
description of CLOS. In an implementation all these circularities have to
be broken by special-casing, as in any meta-circular interpreter.
Minor niggle: compute-effective-method should probably be called
compute-effective-method-function, since what it is returning is
a function not a method object.
What compute-effective-method returns is neither a function nor a method
object. It actually returns a Lisp form. See 88-002 p.1-32. This
probably means your example method for compute-discriminator-code is
wrong because it returns the Lisp form, whereas the one in the version
of chapter 3 that was distributed last month calls the effective method
and returns the result. I can't be sure your code is wrong since I have
yet to see a satisfactory explanation of what compute-discriminator-code
This is probably a digression from the main discussion, but I thought it
could be important not to let this mistake go by, since it might affect the
result of the main discussion.