Quoteds (and quasiforms) can be seen kind of as containers...
But there isn't a good way to destructure them at the moment.
One off-the-cuff idea would be that you could SUBPARSE into them:
>> parse ['a:] [subparse quoted! set-word!]
== a:
>> parse [''a:] [subparse quoted! subparse quoted! set-word!]
== a:
>> parse [~(a b c)~] [subparse quasiform! subparse group! [some word!]]
== c
A bit of a belabored method. And because combinators require a series, I can't think of any efficient way to do that (vs. fabricating an array to hold a single item, and parsing that as a series.) But it's better than no method at all.
UPDATE: Having come up with a strategy for doing constraints like quote:quote:block?
, it seems that covers a lot of use cases:
>> parse ['a:] ["e:set-word!]
== a:
>> parse [''a:] ["e:quote:set-word!]
== a:
>> parse [~(a b c)~] [subparse &quasi:group! [some word!]]
== c
It would require SUBPARSE to be willing to go inside quoted lists, which is easy enough to permit (and no reason not to, since it has to pass the type check you know what you're doing).
Seems to be reasonably powerful...just have to make peace with this strange new world of dialecting the act of calling functions itself. (!)