Chapter 22
Macros and Code Evaluation

Have you ever felt frustrated that a language didn’t have just the right feature for some code you were writing? Or have you found yourself repeating chunks of code that weren’t amenable to factoring into functions? Or have you just wished you could program closer to your problem domain?

If so, then you’ll love this chapter.

But, before we get into the details, here’s a warning: macros can easily make your code harder to understand, because you’re essentially rewriting parts of the language. For that reason, never use a macro when you could use a function. Let’s repeat that:

images/aside-icons/warning.png Never use a macro when you could use a function.

In fact, you’ll probably not write a macro in regular application code. But if you’re writing a library and want to use some of the metaprogramming techniques that we show in later chapters, you’ll need to know how macros work.