Remember that the argument can go the other way---you may also want to intercept the keyword
argument of inner (wrapped) procedure.  With hygienic keywords, you can only do that if you import
the same binding as the original one, which is in general impossible (consider the example of :test
keyword from two different libraries developed independently).

On the other hand, avoiding overriding the inner procedure's keyword arguments is easy as far as
we allow applying keyword argument list; the wrapper procedure can take :other-keys argument and
appends it to the keyword-argument list.

--shiro




On Sat, Feb 22, 2020 at 12:39 PM Lassi Kortela <xxxxxx@lassi.io> wrote:
> I think there's some merit to the hygienic keywords approach, but it's
> quite experimental whereas non-hygienic keywords have been common for
> decades.

Now I remember what the main point was. It allows you to write a wrapper
procedure that adds its own keyword arguments around another procedure
taking keyword arguments, without worrying that the outer procedure will
overwrite arguments of the inner procedure.

E.g. you can make a "with-logging" wrapper that takes keyword arguments
to control how the logging is done. It makes a keyword procedure that is
like the inner procedure, but with additional keywords for logging.

This feels like it would have important interactions with
allow-other-keys, but I can't think of any concrete examples off the top
of my head.