Yeah, that's the idea, Dave, but this will be used for fringe cases (values with negative numbers, values as lists etc.), and from what I understand, the args breaks with at least the negative numbers.. If I assume named parameter pairs have exactly 2 ordered positions, then 40 named parameter pairs (without complexity of dashes) can be defined:
ad_proc -public qf_test {
    {arg1 ""}
    {arg2 ""}
...
    {arg15 ""}
    {arg80 ""}
} { ...
This works regardless of value types (except delineating the special case of empty string versus no value), although it is a bit bulky/clunky.  If only there is a shorthand for that..