destructuring-bind
lambda-list expression {declaration}* {form}*
⇒ {result}*
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. |
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.
(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)
If the result of evaluating the expression does not match the destructuring pattern, an error of type error should be signaled.