[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
another question about defmacro lambda lists
- To: Glenn S. Burke <GSB%JASPER@LIVE-OAK.LCS.MIT.EDU>
- Subject: another question about defmacro lambda lists
- From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
- Date: Sun, 25 Jan 87 20:04 EST
- Cc: sandra%utah-orion@UTAH-CS.ARPA, common-lisp@sail.stanford.edu
- In-reply-to: <870124191250.1.GSB@DWORKIN.PALLADIAN.COM>
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.