Scala にはマクロがあることに気付きましたが、それらを使用するコードは見たことがありません。また、C プリプロセッサ マクロなどとはかなり異なるようです。マクロの概要を読んでみると、以前の Scala では不可能だったものをマクロが提供しているようには見えませんでした。動機の見出しの下に、マクロが有効にするもののリストがあります。
- 言語の仮想化 (元のプログラミング言語のセマンティクスをオーバーロード/オーバーライドして、DSL の深い埋め込みを可能にする)、
- プログラムの具体化 (プログラムに独自のコードを検査する手段を提供する)、
- 自己最適化 (プログラムの具体化に基づくドメイン固有の最適化の自己適用)、
- アルゴリズムによるプログラムの構築 (プログラミング言語でサポートされている抽象化を使用して記述するのが面倒なコードの生成)。
メニューの後半には、型マクロ、準引用符、型なしマクロなどの実験的なマクロ機能があります。これは明らかに需要があります!
これらはすべて、Scala を深く理解して非常に洗練されたライブラリを構築する人にとっては、優れた機能のように思えます。しかし、マクロは平均的な Scala 開発者にも何かを提供するのでしょうか? マクロを使用すると Scala コードが改善されますか?