Sat Jul 16 11:09:59 CEST 2011

A letter to a C programmer

If you ever wonder where my tendency to write weird C preprocessor
constructs comes from, it is most likely from spending too much time
with Racket, a Scheme dialect.  http://racket-lang.org/

That language contains the current state of the art of untyped macro
systems, which integrates a very powerful and simple name scope
management system (modules) with simple templates ("syntax-rules") and
full multiple-stage code generation ("syntax-case").

It is an incredibly powerful system.  Most of what it makes possible
you can't do in CPP.  What seems to have happened for me though is
that working with Racket macros made it possible to point a finger at
exactly what is wrong with CPP and how to hack around it in some