[racket-dev] When is it safe to not rename a runtime value in a macro?
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
identifiers.)]
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!