#### 5.3.17 destructuring-bind [Macro] ¶

`destructuring-bind` lambda-list expression {declaration}* {form}*
⇒ {result}*

#### Arguments and Values:: ¶

lambda-list—a destructuring lambda list.

expression—a form.

declaration—a declare expression; not evaluated.

forms—an implicit progn.

results—the values returned by the forms.

#### Description:: ¶

destructuring-bind binds the variables specified in lambda-list to the corresponding values in the tree structure resulting from the evaluation of expression; then destructuring-bind evaluates forms.

The lambda-list supports destructuring as described in Destructuring Lambda Lists.

#### Examples:: ¶

     (defun iota (n) (loop for i from 1 to n collect i))       ;helper
     (destructuring-bind ((a &optional (b 'bee)) one two three)
         `((alpha) ,@(iota 3))
       (list a b three two one)) ⇒  (ALPHA BEE 3 2 1)

#### Exceptional Situations:: ¶

If the result of evaluating the expression does not match the destructuring pattern, an error of type error should be signaled.

#### See Also:: ¶

macrolet, defmacro [Macro]