No coffee yet, but why is the first one problematic?
(destructuring-bind (&optional (m 100)(p m)) nil (list m p)) -> (100 100)
(let ((var 42)) (destructuring-bind (&optional (m var) var) nil (list m var)))
Where VAR is used as the default for M, hey, there better be one out there outside the DSB to eat.
-----