I've implemented srfi-177 on Gauche using er-macro, but then I found a bug in Gauche
(there was unhygienic code in our internal handling of keyword lambda-list expansion) so
it doesn't work with the current release version of Gauche.
If I make a new release of Gauche, I'll PR my er-macro version.


On Tue, Oct 22, 2019 at 11:08 AM Lassi Kortela <xxxxxx@lassi.io> wrote:
> Well, it's your SRFI.

It doesn't matter very much. I don't want to make any decisions that
people are generally unhappy with, and would prefer to avoid divisive
decisions altogether. Scheme needs convergence more than divergence
right now. As you know well in your position, we need to lose some
battles to win the war. That's a key (heh) ingredient in any plan to
defeat the Lisp curse.

> 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.

It's even better than this: Chicken uses ER; Kawa, Guile and Racket use
syntax-case (thanks to you and Marc).

Bigloo, Gambit, Gauche, Sagittarius, STklos, S7 use define-macro.
Hints/help for converting any of these to hygienic macros are welcome.

> One over syntax-case

With the current parenthesis-based syntax (a b c (d e f)) we can just as
well use syntax-rules. If we decide to change it to something like (a b
c &key d e f) I will switch to syntax-case.

> One over ER

The current Chicken implementation is based on explicit renaming. Is it
needed for other implementations?

> And never mind anything else.

This is fine; I'm not partial to any macro system and will happily use
whatever gets the job done. FWIW, syntax-case has been nice for this job.