Some lisps have a 'match' macro that does destructuring-binds such as
(define x
(match *something*
((a b a) (cons a a a b))
((_ _ a) a)
(else #f)))
Hygienic macros create new bindings with names that cannot exist anywhere else but when they don't deal in macro-introduced names, they should substitute for the correct referred name.