8.3 Destructuring

[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.