On Tue, Mar 3, 2020 at 7:52 AM Lassi Kortela <xxxxxx@lassi.io> wrote:

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.