We probably also want to re-think keyword arguments a bit. Given:
(lambda (a1 a2 #!key k1 k2 #!rest r) ...)
The existing "standard" is that r *includes* the keyword arguments.
I'm not sure is this is what is most useful. For a typical "builder"
function (HTML builder, Swing builder, etc) you want keyword arguments
for named properties followed by "child" expressions. You don't want
all the keyword bindings mixed up with the child parameters.
So I think we need a new delimiter - I thought of #!tail. This is like
#!rest, but it does *not* include any keyword arguments, and if there
are keyword arguments not matched by keyword parameters, then it
is an error.
Does this make sense? Suggestions for a better name than #!tail?
(Note that adding this may not happen soon.)