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

Re: Category Errors



    Here is a generic function ``in CLOS'':

    	Add-method generic-function method

    And here is how we have ``carefully laid out ... the range of
    legal arguments'' to it:

    	Arguments:

    	The generic-function argument is a generic function 	object.

    	The method argument is a method object.  The 	lambda-list of
    the method function must be congruent with the lambda-lists of any
    other 	methods associated with the generic function and 	with the
    lambda-list of the generic function.

    		(page 2-5, FUNCTIONS)

We should have been more careful about our wording perhaps.  Because we
have not yet formalized the notion of protocol, we have had to say the
the first argument is a generic-function.  But it could of course be any
object that satisfied the same protocol (could act as the argument to
some set of generic-functions).   It is the ability to specialize (make
"is a generic-function object" mean "be an instance of a subclass of
generic-function object") and the ability to create alternative
implementations that is one of the important improvements that object
oriented programming adds to Lisp --  Hence a MAJOR feature.  Users who
ask "what's that thing?" have not understood object oriented
programming, and it is up to us to help explain it -- not apologize for
it.