In the section "Emulating keywords in Schemes that don't have them", it is said that the interplay with optional and rest arguments is "somewhat confusing". Can you explain what you mean by this?
There are good use cases for keyword arguments together with a rest argument. I am not talking about rest arguments that are used to emulate optional arguments (as in "assoc" of R7RS-small), but rest arguments that can consist of an arbitrary number of arguments.
For example, if we have an addition procedure `plus' in some numeric library, we want to be able to specify the exact addition algorithm used through a keyword argument:
(plus algorithm: naive 1 2 3 4 5 6)
As the argument about rest arguments is in the "Emulating ..." section of the SRFI, it seems to me that the restriction has been made more out of technical reasons because the rest argument is re-used for keyword arguments in the portable implementation.
I don't think that this restriction is needed:
We can use a parameter object to pass down keyword arguments to a procedure accepting keyword arguments. Parameters are Scheme's mechanism to implicitly pass down arguments.
In other words, every call with keyword arguments is wrapped into a parameterize form setting the invisible keyword parameter. The body of a procedure taking keyword arguments is again wrapped into a parameterize form clearing the keyword parameter.