Well, it's your SRFI.  But as I say, I would be happy if the available implementations were:

One per kind of native keywords, using the low-level macros available there.

One over syntax-case

One over ER

And never mind anything else.



On Tue, Oct 22, 2019 at 4:31 PM Lassi Kortela <xxxxxx@lassi.io> wrote:
>> heave the syntax-rules implementation overboard as far as I am concerned,
>> and eliminate the need for the parens in favor of a syntactic keyword
>> like &keys.  Best of all worlds.
>
> Why is &key better? Would you like it in keyword-call in addition to
> keyword-lambda? I think it's a worse alternative.

To clarify,

This is the most common right now, as per
<https://srfi.schemers.org/srfi-177/srfi-177.html#_scheme_implementations_with_native_keywords>:

(lambda (foo #!key bar) ...)

This is similar to Common Lisp and DSSSL and I think it's fine. The
challenge is to find universally workable token for the `#!key` part.
Some Schemes have :key or #:key.

177 defines a new `keyword-lambda` instead of extending `lambda`, so we
can pick whichever keyword we want. But we should do it with a view to
extending lambda in R7RS-large, so that 177 code can ideally be
converted to standard R7RS-large code simply by replacing
`keyword-lambda` with `lambda`. Since 177 cannot mandate a new directive
ala `#!key`, we'll have to go with an identifier; R7RS-large might be
able to pick either alternative.

This:

     (keyword-call foo a b c &key d 3 e 4 f 5)

I think is perhaps inferior to this:

     (keyword-call foo a b c (d 3 e 4 f 5))

Ideally it would be:

     (foo a b c :d 3 :e 4 :f 5)