My problem (or, maybe, my upside) is that I do not know enough of Common Lisp. As far as I have understood SRFI 177, we have positional arguments and keyword arguments and both are disjoint.  There is nothing like superfluous keyword arguments.  So superfluous position arguments can get into a rest list argument and this is completely orthogonal to keyword arguments.

Am Di., 3. März 2020 um 15:17 Uhr schrieb John Cowan <xxxxxx@ccil.org>:


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.
 


--
Prof. Dr. Marc Nieper-Wißkirchen
 
Universität Augsburg
Institut für Mathematik
Universitätsstraße 14
86159 Augsburg
 
Tel: 0821/598-2146
Fax: 0821/598-2090
 
E-Mail: xxxxxx@math.uni-augsburg.de
Web: www.math.uni-augsburg.de/alg/mitarbeiter/mnieper/