Node: destructuring-bind, Next: , Previous: defparameter, Up: Data and Control Flow Dictionary



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