[gambit-list] Riaxpander on Gambit

Matt Hastie matthastie at gmail.com
Mon Jul 8 01:51:16 EDT 2013


"Does [riaxpander] give useful information for the macro developer / macro user?"

Riaxpander has capacity to serve the error reporting needs of both macro developer and user roles. The integration as presented, neither: a) effectively utilizes gambit source location data, nor b) effectively utilizes riaxpander history. It is a crude tool to use in its current state.

"[riaxpander] compiles macros; does this mean that [riaxpander can load] a module that contained syntax-rules-defined macros, it will then expand any code using them?"

Yes, this is the 'dark meat' that I stole from the chicken / riaxpander integration. Riaxpander does not provide a module system. One can define a syntax in a .scm file, compile it, load the compiled object, and use a defined syntax.

Regards,
Matt.

On Jul 7, 2013, at 12:36 PM, Álvaro Castro-Castilla <alvaro.castro.castilla at gmail.com> wrote:

> Thanks for the link Matt. I think I read it a long time ago. I care mostly about syntax-rules, because that's what you will find more often when using 
> I wonder how does Riaxpander perform regarding:
> - error reporting. Does it give useful information for the macro developer / macro user?
> - you say it compiles macros; does this mean that loading a module that contained syntax-rules-defined macros, it will then expand any code using them?
> 
> I forgot to CC the thread. This was the conversation:
> 
> 
> > Well,
> 
> > That's a big question!
> 
> > I'm no expert on macro expansion, but from my reading I understand the following:
> 
> > Psyntax is Dyvbig's r6rs macro expander coup d'etat. It provides the implementation of syntax-case for r6rs from chez scheme. Use of this expander effectively turns any scheme into a dialect of Chez. It is also a large implementation, I'm not aware of how it is implemented internally.
> 
> > Riaxpander is a syntactic closure / explicit renaming expander that has support for syntax-rules by expressing syntax-rules in terms of the simpler expanders. It is conceptually most similar to blackhole, which is also a syntactic closure / explicit renaming expander that has a macro system and build system incorporated.
> 
> > Alexpander is an implementation of syntax-rules in r5rs - simple.
> 
> > If you're interested in more detail without having your mind blown reading source, Alex Shinn wrote an excellent comparative analysis in this thread:
> 
> > https://lists.gnu.org/archive/html/chicken-users/2008-04/msg00013.html
> 
> 
> 
> 
> 
> > > Very nice! Thanks Matt
> 
> > > What are the main differences between this expander and Psyntax or Alexpander?
> 
> 
> 
> 
> 
>         Álvaro Castro-Castilla    --    a at fourthbit.com
>           Dedicated to the Craft of Software: Turning Ideas into Reality
> 
> 
> 
> 
> 
> On Sat, Jul 6, 2013 at 7:16 AM, Matt Hastie <matthastie at gmail.com> wrote:
> Hello Gambit People,
> 
> I've been hacking away at riaxpander, and now have it at the point where it runs in native gambit. It can compile Alex Shinn's matchable library and run the matchable unit tests - that's the net testing thus far!
> 
> Credit here goes to Taylor R. Campbell, for creating such a very nice and powerful expander. My contribution was to:
> 
> - extract riaxpander-gambit.scm from the tmp directory on Campbell's website,
> - vandalize the source to support case sensitivity (lower case all macrology patterns),
> - figure out the problems that prohibit gambit compile-file from working,
> - add some dark meat from the chicken to support loading of macros in compiled source, and
> - add a cond-expand classifier that works when syntax-case appears in a non-evaluated feature clause.
> 
> Line numbers and decent error messages are inoperative at this time. I also haven't examined which scheme flavor the macrologies define. I'm not certain how much gambitism is there. My personal plan is to keep hacking away towards r7rs and/or a module system (r7rs define-library) ... but these are indeed lofty goals. I am already out of my depth, deep in the lambdas.
> 
> Source code is in:
> 
> https://github.com/matthastie/riaxpander
> 
> Kind Regards,
> Matt Hastie.
> 
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
> 
https://mercure.iro.umontreal.ca/pipermail/gambit-list/2013-July/006867.html


More information about the Gambit-list mailing list