destructuring-bind

CL-USER 1 > (setq data '(1 (2 . 3) (4) 5 6 7))
(1 (2 . 3) (4) 5 6 7)

CL-USER 2 > (destructuring-bind (a (b . c) (d) . e) data
              (list a b c d e))
(1 2 3 4 (5 6 7))

CL-USER 3 > (destructuring-bind (a (b . c) (d) . e) data
              (append (list a b c d) e))
(1 2 3 4 5 6 7)

CL-USER 4 > (destructuring-bind (&rest a) data
              a)
(1 (2 . 3) (4) 5 6 7)

CL-USER 5 > (destructuring-bind (a &key b (c 0)) '(1 :b 2)
                  (list a b c))
(1 2 0)

独自の簡易データ構造なんかをcar,cdr等で解析して値を目的の変数に格納するより、destructuring-bindの第一引数に構造のパターンを渡してしまえば楽だなぁ。