Unless i'm mistaken, it looks like there is some interaction problem between & patterns and :as patterns
(match (link: [:bar :baz)]
(link: ([:bar & r) :as m)] m)
-> (link: :bar)
I'm expecting (link: :bar :baz) here
This is as I expect :
(match (link: [:bar :baz)]
(link: [:bar & r)] :a)
-> :a
This is also as expected :
(match (link: [:bar :baz)]
(link: ([:bar :baz) :as m)] m)
-> (link: :bar :baz)
so & and :as each work on its own.