Scala2.10.0が出た後の、今後のマクロの研究方向について

以下のページ
http://scalamacros.org/news/2012/11/05/research-projects.html
をなんとなく要約 & 感想を書いてみるだけのもの。要約するだけなので、詳しく正確に知りたい人は原文読んでください。単に流し読みして、自分のメモ的に書いてる意味もあるので、間違いあったら教えてください


実際、どのScalaのversionに入るのかは明記されていませんが、わりと実用の観点から「今後どのあたりを研究していって、マクロを拡張、もしくはマクロを利用してなにを作っていくのか?」というのが、今までになく詳細に記述されていたので簡単に要約。大きく分けて6つ書いてありました。

  1. Optimizing collections with macros
  2. Using reified types for specialization
  3. Macro-based class system
  4. Macro-based continuations
  5. Multi-stage programming with macros
  6. Interpreter for abstract syntax trees


1は、すでに、 このあたり
https://github.com/retronym/macrocosm/blob/521dfc0bcd1803258b9f09e7bc917431d198f59d/src/main/scala/com/github/retronym/macrocosm/Macrocosm.scala#L247-359
で、いくつか実装されていたりしますが、collectionの高階メソッドを、マクロを利用して、さらに最適化して速くしよう!*1ということですね。



2も1と同じく、最適化の話ですけど、AnyValについて型ごとに最適化するなどしようという、別の方向性での話のようです。



3は、簡単に読んだけれど、よくわからなかったので誰か教えてください・・・(´・ω・`)
よく見ると、「Dependent Object Types -Towards a foundation for Scala’s type system -」という、おそらく2012年の新しい(?)Scalaの論文
http://lampwww.epfl.ch/~amin/dot/fool.pdf
のリンクがあったので、これが関係しているのでしょうか?あと「Scheme with Classes, Mixins, and Traits」という論文へのリンクがあったり
http://www.ccs.neu.edu/racket/pubs/asplas06-fff.pdf
とにかく面白そうですが、自分の知識ではよくわからないのでだれか・・・



4は、継続についてです。継続とマクロ組み合わせると面白いことできる? もしくは、 マクロだけである意味継続と同様のことが出来る場合があるんでしょうか?



5も、3と同じくというか、3以上によくわからないんですが、誰か・・・。これも、リンクが2つほどあったので、まずこの辺りを読まないと・・・

6は、すごく大雑把に言ってしまうと、
「現在は、Scalaのマクロよりも、Scalaコンパイルプラグインでできる事のほうが多いけれど、マクロの機能をもっと拡張していこう」という話だとおもいます。最初から、この方向性は予定していたのでしょうけど、2.10.0を出す時点ですべてを入れようとするととても時間がかかるので、まず2.10.0の時点では最低限の機能を入れて、段階的に拡張していくという方針なのだと思います。

*1:もしくはメモリの消費抑えよう