如何在Scala中编程以与Dotty前向兼容

如何在Scala中编程以与Dotty前向兼容,scala,dotty,Scala,Dotty,在最近的《奇怪的环路》中,马丁·奥德斯基(Martin Odersky)阐述了他对Scala未来版本Dotty的看法。我知道这是正在进行的工作,由于许多可能的向后兼容性问题,它甚至可能不会流入Scala(至少不是很快)。但如果真的发生了这种情况,我们今天应该如何在Scala中编程以与Dotty实现向前兼容呢?我没有从这次演讲中得到所有的想法,因此我希望有更深入的人来总结这些变化,并描述我们如何做好准备。在演讲结束时,他说“如果您的程序在编译时没有为高级和存在主义者导入任何语言功能,那么您应该可以

在最近的《奇怪的环路》中,马丁·奥德斯基(Martin Odersky)阐述了他对Scala未来版本Dotty的看法。我知道这是正在进行的工作,由于许多可能的向后兼容性问题,它甚至可能不会流入Scala(至少不是很快)。但如果真的发生了这种情况,我们今天应该如何在Scala中编程以与Dotty实现向前兼容呢?我没有从这次演讲中得到所有的想法,因此我希望有更深入的人来总结这些变化,并描述我们如何做好准备。

在演讲结束时,他说
“如果您的程序在编译时没有为高级和存在主义者导入任何语言功能,那么您应该可以”


因此,如果我理解正确,您唯一需要注意的是代码中存在类型或更高级类型的任何可能用法。

我给出的唯一其他建议是,也不要使用包含类型成员的结构类型。这些类型成员是在Scala turing中完成类型检查的元素,我还不确定我们是否希望在Dotty中支持这一点。只包含VAL和DEF的结构类型可能会得到支持。

Martin,严重依赖高级类型(如Scalaz)的库是否应该用其他样式重写?据我所知,将不会有向后的二进制兼容性,使用Dotty之前的Scala版本编译的代码将无法使用Dotty,对吗?现在说还为时过早。我们将保持与更高级类型的向后兼容性,只要它不需要超过合理的努力。这些答案今天仍然相关吗?