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

another question about defmacro lambda lists



    Date: Sat, 24 Jan 87 19:12 EST
    From: Glenn S. Burke <gsb@JASPER.PALLADIAN.COM>

	Date: Fri, 23 Jan 87 15:05 EST
	From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>

	    Date: Fri, 23 Jan 87 12:27:25 MST
	    From: sandra%utah-orion@utah-cs.arpa (Sandra J Loosemore)

	    Does it make sense for nested lambda lists in a defmacro to contain things
	    like &environment?  CLtL does not say whether the non-top-level lambda lists
	    should be ordinary function lambda lists or whether they can use the extended
	    syntax.

	They certainly need to allow destructuring; it wouldn't make sense to have only
	a single level of destructuring.  I don't think &whole and &environment make
	sense any place other than at the top level, though.

    &whole makes sense for subforms;  you need it if you want a pointer to the subform
    being destructured.  I am assuming it applies to the subform being destructured
    against the lambda-list the &whole occurs in, not that it applies to the outermost
    form.

Well, there's something funny here.  Consider:

  (defmacro foo (&rest x &whole y) ...)
  (defmacro bar ((&rest x &whole y)) ...)

In bar, x and y are bound to the same value, but in foo x is bound to
(cdr y).  I suppose it makes sense to allow &whole in bar anyway, but it
could be confusing to some users.