Gauche supports allow-other-keys.

If we aim at greatest common denominator, we may reject it.  Such procedure should get the keyword-value list
in the rest argument anyway.

I wonder if such "wrapper" procedure can be written portably in srfi-177.  Say, we have 'inner' which takes
two required arguments and some keyword arguments, and we want to wrap it with 'outer' which recognizes
additional 'x' and 'y' keyword arguments.  What I can think of is something like this:

(define (outer a b . rest)
   (define outer-adapter (keyword-lambda ((x y))
        (let ((inner-kv-args (delete-keywords '(:x :y) rest)))
           (apply inner a b inner-kv-args)))
   (apply outer-adapter rest))

'delete-keywords' is Gauche-specific and need to be replaced with the portable one, but having wide variety
of what keyword is, it may be difficult.

By the way, can we 'apply'  keyword-taking procedure to the keyword-value list?   Is it that some implementation
doesn't even allow it?

On Tue, Oct 29, 2019 at 8:55 AM John Cowan <> wrote:
DSSSL does not and therefore Chicken doesn't either.  S7 doesn't, Gauche doesn't, Gambit doesn't.  Guile does.  I think that's enough for us to reject it.

On Tue, Oct 29, 2019 at 2:29 PM Lassi Kortela <> wrote:
One more unresolved problem is whether 177 should support
"allow-other-keys". It would be useful in making wrapper procedures that
can pass unknown keywords on to another procedure.

I didn't check whether all the current Scheme implementations with
native keywords support allow-other-keys. I suspect some of them don't;
in that case the feature has to be left out of 177.