Macro Paradise 2.11 vs 2.10

时间:2013-05-24 21:32:32

标签: scala macros

Scala Macro Paradise可用于2.11和2.10。对于2.10,它说

  

您已经可以在2.10.x的生产版本中使用quasiquotes

这是否意味着2.10天堂是2.11版本的子集?例如,我可以使用Scala 2.10试验类型宏,还是我需要使用2.11的功能?

3 个答案:

答案 0 :(得分:2)

由于二进制兼容性限制,

Paradise 2.10.x仅包含quasiquotes。感谢btw提出的优秀问题。我已更新指南here

答案 1 :(得分:2)

我的理解是你只能访问准引号。你用这个特殊的2.10版本的宏天堂编译你的宏,然后可以在编译(正常,非宏天堂)scala 2.10的代码中使用它们。这是可能的,因为在编译宏本身时使用了quasiquotations,并扩展为普通的宏代码,它不使用Scala 2.10中已有的其他API(逐个节点地显式创建树)。所以你可以在Scala 2.10代码中使用那些宏,编译器不会看到差异。

另一方面,类型宏不能使用这个技巧,因为它们在scala 2.10中根本不可用。在编译时生成类型不是scala 2.10编译器知道如何操作的,因此您肯定需要使用2.11编译器编译您的客户端代码(您的实际代码,而不仅仅是宏代码)。

答案 2 :(得分:2)

宏观天堂最近被改造为compiler plugin。它包括对quasiquotes(与2.11兼容的源)和宏注释的大大改进的支持。类型宏和无类型宏已经停止(支持宏注释。)