(match [x]
[({:a 0 :b 1} :type Foo)] :a0
...)
:a and :b would be converted to field access, i.e. (.a x)
As with primitive array matching, we should do an instance check followed by hinted field access.
We should consider adopting the deftype/record syntax.