On Tue, Sep 22, 2009 at 9:42 AM, Andy Wingo <[email protected]> wrote: > Hello Lynn > > On Sun 20 Sep 2009 21:34, Lynn Winebarger <[email protected]> writes: > >> "3D" macros allow us to reify "compile-time" values into our source >> code (think compiled procedures appearing as literal constants in >> the operator position of a S-expr). > > What Scheme implementations actually allow this? Guile used to, but then > it grew a compiler.
The last Larceny 0.97 beta allowed it in Andre van Tonder's module system, though I think I had to jump through some hoops to make it happen. I believe Larceny itself utilizes S-exprs with closure constants (that is, compiled user procedures) for "fasl" files in its core language, so it's not a giant leap for the system to support 3D macros. Chez has allowed it in the past, though I don't know whether it still does. As John's post has hinted, with the proper abuse of eval you might even be able to do it with a syntax-rules only system. I don't see any other way of doing it in syntax-rules, but I lack imagination. I'd like to see this kind of expressive power ratified by the standard, but that seems unlikely to happen. Lynn _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
