Defeating Racket’s separate compilation guarantee
lexi-lambda.github.io
lexi-lambda.github.io
I've long appreciated the wizardry that Common Lisp's macros enable, and knew (distantly) that Racket does macros, but was completely unfamiliar with this separate compilation guarantee. If I understand it at all, it's basically a way of getting the benefit of macros without permitting some of the crazier stunts you might be tempted to pull. Neat.
In any case, figuring out a way around that guarantee, and taking us along for the ride, is greatly appreciated.
The advanced adversarial stuff Alexis is doing can help some people understand the underlying model better upfront, but other people thinking they have to know it upfront will be needlessly discouraged.
There's also a risk of learning the fancy things too soon: people seem to fixate on the fancy things, sometimes to the detriment of the basics. My favorite example is when newbies to a language will hear of `eval`, which is almost insanely powerful, and then their solutions tend to include `eval` when there are almost always vastly better solutions.