Am Mo., 9. März 2020 um 10:28 Uhr schrieb Lassi Kortela <xxxxxx@lassi.io>:
Both Amirouche and Marc expressed in the other thread that keyword
lambda syntax is "heavy". Since both of you feel that way, there must be
an important issue there that we should explore.

I don't quite understand the heaviness on the define/kw side; to me
define/kw code feels lighter than an ordinary `define` followed by a
separate let-keywords or let-optionals.

Are you talking about call/kw? I agree that requiring a special prefix
for procedure calls is heavier and ideally could be avoided. (But as
John explained, it can't be avoided in R7RS-large unless the charter is
changed.)

I was talking about `call/kw'. For someone, who doesn't know the history, it will look like needless syntax.  In Scheme without keywords, in Python, in C, etc. procedure calls are not introduced by a special keyword.

In any case, `call/kw' can be avoided without changing the R7RS charter.  John didn't say anything like this.  What we can't simply do is to reinterpret `key:' as a keyword and not as an identifier without remaining backward compatible (thus my suggestion to add a reader flag).

For example,

`(f 1 2 &kw x 3 y 4)'

could be a syntax in R7RS-large (this is just an example, not necessarily a suggestion) that is compatible with R7RS-small and in accordance to the charter if `&kw' is bound to an auxiliary keyword and is not syntax finally expanding into an expression.