Common Lisp the Language, 2nd Edition
![]()
Next: Compiler Macros
Up: Macros
Previous: Macro Expansion

X3J13 voted in March 1989 (DESTRUCTURING-BIND) to make the
destructuring feature of defmacro available as a separate
facility.
[Macro]
destructuring-bind lambda-list expression {declaration}* {form}*
This macro binds the variables specified in lambda-list to
the corresponding values in the tree structure resulting from evaluating
the expression, then executes the forms as an implicit
progn.
A destructuring-bind lambda-list may contain
the lambda-list keywords &optional,
&rest, &key,
&allow-other-keys, and &aux;
&body and &whole may also be used as
they are in defmacro, but &environment may
not be used. Nested and dotted lambda-lists are also permitted
as for defmacro. The idea is that a
destructuring-bind lambda-list has the same format
as inner levels of a defmacro lambda-list.
If the result of evaluating the expression does not match
the destructuring pattern, an error should be signaled.

AI.Repository@cs.cmu.edu