Lars Hellström wrote:
> Finally, there is the issue that a processor has to put the argument in
> a toks register. I understand this is for generality (only sane way to
> pass along # tokens), but my experience with this type of API is that
> one should make it easy to use commands that happen to already exist. In
> this case, it would mean to also support a processor that would store
> its result in a macro rather than a toks register, since I'm quite sure
> this is what people tend to do unless they definitely need a toks register.

Maybe I'm missing something here, but if we need the processed value
returned in a named variable it should not matter whether it is a toks
or a tl (or indeed anything else). All that needs to happen is

\toks_set:NV \l_xparse_arg_toks <variable-used-in-processor>

which is the same action if <variable-used-in-processor> is a tl or a
toks. As there are add left/right functions for toks, there should also
be no problem "building up" \l_xparse_arg_toks piecewise:

\toks_out_right:Nn \l_xparse_arg_toks { <whatever> }

and so on.
Joseph Wright