Macro
マクロはコンパイル時にコードを展開し、メタプログラミング(コードを生成するコード)を可能にする。重複と定型コードを避けられる。
目的
コンパイル時のコード変換により、定型コードを排除し DSL を実装する。
メカニズム
C のマクロはテキスト置換(プリプロセッサ)である。Rust のマクロは衛生的で AST に展開される。Lisp のマクロはコードをデータとして扱う。JS にはタグ付きテンプレートリテラルがある。マクロは関数より柔軟だがデバッグは難しく、使用には注意がいる。
ユースケース
- コード生成
- DSLの構築
- 定型コードの削減