メタプログラミングとは
メタプログラミングはプログラミングの技法の 1 つです。プログラムのコンパイル時や実行時に他のプログラムを生成したり,プログラム自身に何らかの影響が及ぶような動作をさせます。
.NET Framework には属性と呼ばれる仕組みがあります。属性でマークしたクラスやメソッドにメタデータ情報を付加します。例えば Serializable
属性は,属性が付けられたクラスがシリアライズ可能であることを示します。
[System.Serializable] public class A {}
マクロと属性
Nemerle のマクロは .NET Framework の属性と少し似ています。 .NET Framework の属性はプログラムにメタデータを付与し,プログラムの実行時にメタデータを何らかの形で利用します。一方マクロはコンパイル時に利用されます。例えば前に登場した匿名型はコンパイル時に型を作成しています。
次の章で Nemerle の標準マクロライブラリーを具体例をいくつか紹介します。例を見ることで,マクロがどのように便利であるかを見ていきます。