マクロ
コードを生成するコード。Cのプリプロセッサ(#define)、LispやSchemeのS式マクロ、Rustの宣言的マクロと手続き的マクロなどがある。強力だが危険でもある。
Cのマクロは単なるテキスト置換で、名前の衝突や評価順序のバグで悪名高い。LispのマクロはAST上で動くため衛生的で強力。Rustにはmacro_rules!(宣言的)と、derive、関数風、属性用の手続き的マクロがある。現在の見方では、マクロは「最後の手段」であり、使いすぎるとコードが読めなくなる。C++のテンプレートメタプログラミングは技術的には親戚だが、正式にはマクロではない。