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

Re: Category Errors

    My point was that one could rationally design CLOS to be able
    to distinguish between classes and meta-classes, and hence we would
    be justified in trying to prevent category errors.

If it were clear that one could be sure that a definition were in error,
then perhaps we could consider enforcing some restrictions.  However, it
is a rational thing to experiment with various new types of object
system, defining methods for all the protocol of interest, and not use
any preexisting class as a super-class (this is particularly a good idea
if one wants to make sure that the new implementation is complete).  To
force a user to use a particular (perhaps empty) metaclass just for a
declaration surely violates the spirit of Lisp.

	   We've carefully laid out, in most cases, the range of
	   legal arguments to functions and generic functions in CLOS; we
	   could easily do that here, whereas it's difficult to control a
	   user who wants to act irrationally with code all of his own
We have NOT laid out the range of legal arguments for generic functions.
We have specified how they behave for arguments of particular classes;
tha is, we have described some method(s) on generic functions, and their
contract.  A major point of object oriented programming is to allow
users to add their own methods to generic functions.  To talk about THE
AUTHOR OF A GENERIC FUNCTION is to make the same mistake.  Generic
functions have certain contracts, but not ones that restrict them to
certain classes of arguments.
    I think that to dismiss the point as some fluke in thought
    process before understanding the issues does ill justice to the
    specification process, even though I believe we will allow the

I think understanding the issue is important.  So we agree on that
point.  But I feel that the "blemish" is really a beauty mark.