以前(といっても10ヶ月くらいまえですが)
Scala の macro に gensym (ユニークな名前生成) ないのかな。とりあえず現状なさそうだな
2012-02-27 03:23:09 via web
と言いましたが、freshという名前のメソッドで、存在するみたい(?)です。これ見て気が付きました*1
https://github.com/non/spire/pull/43
Gensym*2とは、ある程度Lispとかやってる人にはお馴染みだと思いますが、uniqueな名前を自動的に生成してくれるというものです。*3
水島さんの3ヶ月くらい前のスライドでも言及されてましたが
http://www.slideshare.net/kmizushima/scala-macros-makes-it-easy-to-provide-useful-libraries/8
適当に試したら、現状2.10.0の実装では $1$ 、 $2$ という名前が順番に生成されてました・・・。*4
ところで、Scalaのmacroあまりまだ詳しくないので、「これはGensymじゃないよ!」とか、もっと色々詳しく説明出来る人がいたらお願いします。
ちなみに、リンク先のコメントに書いてありますが、2.10.1からfreshが非推奨になって、freshNameという名前になるそうです。まだexperimentalなので、しかたがないですが、macroやreflectionまわりは他にもこういう変更まだまだ多いです。
もう少し、試したり調べたりして、何かわかればあとで書きます。