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

Re: Comment on the chapter 2, Version of Nov 2.

       Date: 3 Nov 87 10:29 PST From: Danny Bobrow

        2-21  syntax replace {slot-option}* by [[^ slot-option]]

        and use {:accessor generic-function-name}* {:reader
        generic-function-name}*  {:initarg name}*

        as the last three items of slot-option.  Then the
        remarks on which options can appear more than once in Arguments
        are redundant.

    Stylistic comment: I hope we are not changing the style so that
    it is impossible for a reader who skips over the BNF syntax
    notation to understand the document.  I think that would be most
    unfortunate.  I'd much rather have a little redundancy than make it
    necessary to understand the fine points of this increasingly
    obscure notation in order to understand the document.
I agree.  I just wanted to make the syntax be complete.
       2-26  The syntax of defgeneric now shows a lambda-list
        as a required argument. I thought :lambda-list was supposed to
        be a keyword argument.  Similarly for generic-labels,
        generic-flet, generic-function, and with-added-methods.  When
        there are method descriptions provided, the lambda-list is
        often redundant, and hence can be a cause for mistakes. My
        notes from the meeting show that there was no required
        lambda-list, at least for the generic-labels, generic-flet,
        generic-function, and with-added-methods.  Hence by extension,
        there should not be a required lambda-list in defgeneric.

    I don't think we agreed in the meeting to remove these
    lambda-lists.  My copies of the draft documents from the meeting
    show the lambda-list (along with a bunch of other stuff) missing in
    the first version of some writeups, but present in the second
    version that we produced after discussion and rationalization of
    the syntax of all the things having to do with generic functions. 
    Perhaps you got mixed up on which version was newer?  There are no
    dates on these pages but at the meeting I wrote "old" or something
    on the older ones.

You are probably right about the cause for the mixup.  But the issue
remains whether lambda-list should be required.  For most uses of these
forms, I can't see really wanting a lambda-list  e.g. just
(ensure-generic-function 'foo) followed by defmethods, or where one has
the methods for a generic-flet (etc) and hence doesn't need the
lambda-list unless the :argument-precedence-order option is used.  I
still can't remember an argument for making it required.  Can you remind
me please.