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

&BODY



    Date: Mon, 21 Jul 1986  21:46 EDT
    From: "Scott E. Fahlman" <Fahlman@C.CS.CMU.EDU>
    To:   common-lisp@SU-AI.ARPA
    Subject: Some easy ones (?)
    Message-ID: <FAHLMAN.12224580594.BABYL@C.CS.CMU.EDU>
    
    Proposal #6: Parsing in &BODY
    
    Change (could conceivably break existing code which destructures &body
    arguments, but this should be rare as such destructuring is generally
    too complex to do via the built in mmechanism):
    
    Extend the syntax of an &BODY parameter to DEFMACRO to allow writing
    &body (body-var [declarations-var [doc-string-var]]).  If only body-var
    appears in parentheses, it means the same as a body-var with no
    parentheses.  Otherwise, it means to give the original body to
    PARSE-BODY (with documentation-allowed-p true iff the doc-string-var is
    specified) and then bind the variables to the corresponding values
    returned by PARSE-BODY.  This is purely a syntactic convenience for the
    user of DEFMACRO so that he doesn't have to use &ENVIRONMENT and then
    call PARSE-BODY himself.
    
    Note: This extension is proposed only for &BODY, not for &REST, so &BODY
    will no longer be exactly equivalent to &REST in a DEFMACRO arglist.
    
This is confusing.  CLtL (page 146) says that

	Anywhere in the lambda-list where a parameter name may appear ...,
	a lambda-list may appear in place of the parameter name.

Thus, the following is a valid DEFMACRO form.

	(DEFMACRO FOO (&REST (X Y Z)) ...)

which is equivalent to

	(DEFMACRO FOO (X Y Z) ...)

But a similar DEFMACRO form

	(DEFMACRO BAR (&BODY (X Y Z)) ...)

is regarded as

	(DEFMACRO BAR (&BODY X) ...)

if doc-strings and declarations are ignored.  Thus KMP's suggestion below
is less confusing.

    [Note: KMP has suggested the syntax (...&body body-var decl-var doc-var).
    This does not break any existing code and would allow default and
    supplied-p values for the three variables.  I (sef) don't think these are
    important advantages, and I prefer the syntax proposed above, which is
    less confusing to the eye -- my eye, ayway.  The proposed format is the
    one we discussed on the mailing list earlier and seemed to be favored by
    most people.]