a more canonical example of this problem (where I saw it first) are when using 'and' e.g.
(define a '(1 2))
(match a ((and (a 2) (1 b)) (+ a b)) (_ #f)) -> #f
But with my fix you wil get the correct 3.
Now the reson are that for 'and' as well as for '$' another location a is under the command
of an implicit (let ((a car)) ...). One could perhaps argue that this is a bug in syntax handling but I would not think so. Anyway maybe we should consider moving this fix upstream.