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.
Afficher les réponses par date
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
"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@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@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
https://mercure.iro.umontreal.ca/pipermail/gambit-list/2013-July/006867.html
Dear Matt,
If Riaxpander is kind of undocumented, now that you know how it works, would you feel like writing a reference documentation for it, showing the workings of the macros and exactly the expansion algorithm, with code references?
Currently any module system, expander or Scheme implementor who wants to get into this has no such detailed docs to work with, would be awesome.
Best regards, Mikael
2013/7/8 Matt Hastie matthastie@gmail.com
"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@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@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
https://mercure.iro.umontreal.ca/pipermail/gambit-list/2013-July/006867.html _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list