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@fourthbit.com Dedicated to the Craft of Software: Turning Ideas into Reality
On Sat, Jul 6, 2013 at 7:16 AM, Matt Hastie matthastie@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@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list