destructuring-ecase (keyform &body clauses)
The macro destructuring-ecase is a combination of ecase and destructuring-bind.
keyform must evaluate to a cons. The clause whose case-keys matches car of key, as if by ecase is selected, and forms are then executed with cdr of key is destructured and bound by the destructuring-lambda-list.
(defun decase (x) (destructuring-case x ((:foo a b) (format nil "foo: ~S, ~S" a b)) ((:bar &key a b) (format nil "bar, ~S, ~S" a b)) (((:alt1 :alt2) a) (format nil "alt: ~S" a))))