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の第一引数に構造のパターンを渡してしまえば楽だなぁ。