1

The Scala Macro Paradise is available for 2.11 and 2.10. For 2.10, it says

you can already make use of quasiquotes in production versions of 2.10.x

Does that mean that 2.10 paradise is a subset of the 2.11 version? For instance, can I experiment with type macros, using Scala 2.10, or is that a feature for which I need to work with 2.11?

4

3 に答える 3

2

Paradise 2.10.x には、バイナリ互換性の制限により、quasiquotes のみが含まれています。ところで素晴らしい質問をありがとう。ここでガイドを更新しました。

于 2013-05-25T09:14:06.697 に答える
2

私の理解では、あなたは準引用符にしかアクセスできないということです。この特別な 2.10 バージョンのマクロ パラダイスを使用してマクロをコンパイルすると、(通常の非マクロ パラダイス) scala 2.10 に対してコンパイルするコードでそれらを使用できます。これは、マクロ自体をコンパイルするときに準引用符が使用され、Scala 2.10 で既に利用可能な API 以外を使用しない通常のマクロ コードに展開されるため可能です (明示的にノードごとにツリーを作成します)。したがって、これらのマクロを Scala 2.10 コードで使用できます。コンパイラーは違いを認識しません。

一方、型マクロは、scala 2.10 ではまったく利用できないため、このトリックを使用できません。コンパイル時に型を生成することは、scala 2.10 コンパイラがその方法を知っていることではないため、2.11 コンパイラを使用してクライアント コード (単なるマクロ コードではなく、実際のコード) をコンパイルする必要があります。

于 2013-05-25T09:37:12.200 に答える
2

マクロ パラダイスは最近、コンパイラ プラグインに刷新されました。これには、quasiquotes (2.11 と互換性のあるソース) とマクロ注釈のサポートが大幅に改善されています。型マクロと型なしマクロは廃止されました (マクロ アノテーションが優先されます)。

于 2013-08-07T12:36:36.157 に答える