Re: reference implementation; multiple patterns after ellipsis Taylor Campbell 21 Oct 2003 06:36 UTC

[ I've lost count of how many times I've accidentally sent a mail to
   one person instead of the list.  Grrrr. ]

On Sunday, Oct 19, 2003, at 21:10 US/Eastern, Alexpander Petrofsky

> The draft says:
>   No implementation is provided because this is SRFI is merely a
>   request to add two basic features to the SYNTAX-RULES pattern
>   language, and so the implementation of it would be a modification of
>   an implementation of SYNTAX-RULES.
> I think that's bogus.  It's true that RFI stands for "Request For
> Implementation", but that should be taken as "Request for others to
> implement in the same way what I have found to work well" rather than
> "Request for someone to implement my idea that's never been tried,
> even by me".

Well, it hasn't!  (except in your macro transformer, and some
hypothetical macros that I've written involving making Andre van
Tonder's monadic CPS macros even cooler)

> Even though it's impossible to provide a simple implementation that
> everyone can just drop into their system, I think it's still valuable
> to have something that at least proves the idea is implementable, and
> that people can look to for guidance if the English specification is
> later found to be self-contradictory.

(see two sections below)

> One advantage of the original (... ...) idea over
> choose-your-own-ellipsis is that it is already widely implemented, and
> you could use the free somewhat-portable syntax-case expander from
> chez scheme as the reference implementation.
> If you opt for the more pioneering CYOE concept, then you could
> perhaps provide a modified version of the chez scheme expander.  An
> advantage of the chez-scheme expander is that it is used by several
> systems (like SISC and Chicken, IIRC), and patches to it could
> actually be used by those systems' implementors.

Eek.  That would require that I somehow comprehend psyntax.  If
Scott and Felix can only _barely_ comprehend it, I have grave doubts
about _me_ comprehending it...(but I suppose I can try to, and maybe
try to comprehend yours as well, although the more I think about it
the more I dislike the idea of writing a macro transformer purely for
SYNTAX-RULES and _directly_ for SYNTAX-RULES; Scheme48's macro
expander, for instance, totals fewer than one thousand lines of code,
_including_ comments, and it's a SYNTAX-RULES->explicit renaming
transformer _as_well_as_ a macro expander for explicit renaming;
unfortunately, the explicit renaming bit uses Scheme48's internal AST
stuff, so it's not portable at all, and not many Schemes support
explicit renaming)

> Another option, more in the "so at least people have something to look
> at" category, would be to use the macro expander I have been working
> on occasionally, available at, which
> I just updated to include support for CYOE and tail patterns.  (I also
> added a few pages of commentary, but it doesn't rise to the level of
> comprehensibility yet.)

I guess I could put a link to your expander in the implementation
section.  Would that be OK?

> I just noticed that the draft only allows one extra pattern after an
> ellipsis.  Don't you want to allow any number, as in Chez scheme?
> That's the way I implemented it.

Yes, I realized this a few days ago, but I won't change it until I do
some more drastic stuff to the document.

> -al