Currently, match/c from Lathe Comforts can do something like this:
(match/c cons natural? (match/c cons any/c (listof string?)))
But another incarnation of it could use hyperbrackets to delineate a more extensive composition of match operations:
(taffy-match/c `(cons ,natural? (cons ,any/c ,(listof string?))))
This could also have multiple hyperbracketed parts representing different match clauses to try.