Next: , Previous: Macro Lambda Lists, Up: Lambda Lists


3.4.5 Destructuring Lambda Lists

A destructuring lambda list is used by destructuring-bind.

Destructuring lambda lists are closely related to macro lambda lists; see Section 3.4.4 (Macro Lambda Lists). A destructuring lambda list can contain all of the lambda list keywords listed for macro lambda lists except for &environment, and supports destructuring in the same way. Inner lambda lists nested within a macro lambda list have the syntax of destructuring lambda lists.

A destructuring lambda list has the following syntax:

reqvars::=
{var | lambda-list}*
optvars::=
[&optional {var | ({var lambda-list} [init-form [supplied-p-parameter]])}*]
restvars::=
[{&rest | &body} {var | lambda-list}]
keyvars::=
[&key {var | ({var | (keyword-name {var | lambda-list})} [init-form [supplied-p-parameter]])}* [&allow-other-keys]]
auxvars::=
[&aux {var | (var [init-form])}*]
envvar::=
[&environment var]
wholevar::=
[&whole var]
lambda-list::=
(wholevar reqvars optvars restvar keyvars auxvars) |
(wholevar reqvars optvars . var)