Meta Programming

The programming language C includes a so called preprocessor. With this you can make (halfway complex) replacements in the code before it gets compiled. A short while ago I asked myself what would happen if you continue this principle, so that you can do replacements in the preprocessor code and in the code for these replacements also and so on. You may think of it as a king selfreferencing programming language, that is possible to do any number of replacement cycles in the source code before the compilation.

This is a somewhat fascinating thougt to me. Anyways, there are probably only a few very special cases in which this will be of any use. Even then you might need only two or three replacement cycles. Moreover, every thing else might get to complex to understand.