[racket] syntax-parse and literals

From: Shriram Krishnamurthi (sk at cs.brown.edu)
Date: Wed Sep 7 14:57:39 EDT 2011

Thanks for the very informative thread.

Piecing together what Asumu, Jay, Robby, and Eli said, I think I
understand what's going on, and I think this actually answers a
question I asked last year and didn't get an answer to: Why do require
and provide export their sub-forms as macros rather than just make
them local keywords.

What I understand now is that by exporting the sub-forms as macros,
one can ensure that the binding structure is just right.  I think this
is what Jay means when he says "I consider insisting on bindings a
feature, because it promotes well-behaved macros".

The downside is that a single "feature" now has a whole bunch of
exports, and anyone who wants to re-export the feature has to know
about and re-export all the other bound names as well.  For instance,
I can't just re-export "require" -- I have to track all the require
sub-forms and re-export those as well.


Posted on the users mailing list.