I can't even remember how the keyword and rest parameters work together,
For the record (and I agree that this is too complex), the rest-list in such a situation consists only of the keywords and their arguments along with any additional arguments. This is because once all required and optional arguments have been found, all remaining arguments *must* be alternating keywords and values.
The only purpose of the &rest argument is to allow the function to find and process any unknown keyword arguments, if they are permitted for this function. This is done by specifying &allow-other-keys in the lambda list or by specifying the special keyword :allow-other-keys (which is always permitted) with a true value. So Marc's `plus` is not definable in CL, or any other Lisp I know of.
Since SRFI-177 does not have any allow-other-keys feature (and rightly so given its goals), there is no need for a rest-list of this form.
You're right - that is a possible implementation strategy. But is
parameterize universal? Bigloo doesn't seem to have it.
Parameterize is itself trivial to implement. It's the interaction with threads that takes some integration.