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 wrote: > 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 petrofsky.org/src/alexpander.scm, 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