[racket-dev] When is it safe to not rename a runtime value in a macro?

From: Eli Barzilay (eli at barzilay.org)
Date: Sat Aug 25 19:44:22 EDT 2012

6 hours ago, Ryan Culpepper wrote:
> In Racket, literal data carry lexical information just like
> identifiers.  When a literal datum is used as an expression, the
> macro expander synthesizes a '#%datum' identifier that determines
> what to do with the literal. The Racket '#%datum' macro just expands
> into a 'quote' expression if the datum is not a keyword.

[And it's not just an academic exerice: I have an LC-like language in
my class where everything is an identifier.  (It makes a nice point
about really having nothing except for lambdas, applications, and

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the dev mailing list.