I just realized that special treatment for named arguments or repeated arguments in this proposal is unnecessary. We can just pass through those arguments like this.
f(a, s: _*, k = v)
Translated to:
f.applyBegin
.applyNext(a)
.applyNext(s: _*)
.applyNext(k = v)
.applyEnd
Then the library author is able to handle the parameter name k at runtime with help of a Dynamic, and handle s with the help of ordinary sequence arguments.
How do you think?