Dotty将如何改变Scala中的纯函数式编程?

时间:2016-12-07 02:15:31

标签: scala scalaz scala-cats dotty

从2013年this question起,奥德斯基先生指出,“现在判断”像Scalaz这样的图书馆是否能够在Dotty下存在(至少在当前状态下)还为时尚早,因为阉割更高 - 粗糙和存在的类型。

在过去的时间里,Dotty对Scalaz& amp;猫被阐明了吗?内置效果和记录等提议的功能是否会改变这些项目的范围?

据我所知,Dotty仍然可以取代scalac,但是当我考虑投入时间将纯粹的功能结构和方法应用到我的工作中时,我认为考虑其旗舰库的未来很重要。

1 个答案:

答案 0 :(得分:5)

Dotty上最新的一个例子是“Scaling Scala”作者:Chris McKinlay(2016年12月15日)(同一篇文章也提到了Scalaz和Cats情况)

  

Martin Odersky一直致力于Dotty的工作,这是一个基于Dependent Object Types(DOT)微积分(基本上是Scala的简化版本)和ideas的新型研究编译器。功能编程(FP)数据库社区。      

从事Dotty开发的团队已经展示了一些与现有技术相比的显着改进,尤其是在编译时间方面。我问奥德斯基他认为Dotty架构的新颖之处,并会帮助最终用户。这是他说的话:

     
    

我想到了两件事:

         
        
  • 首先,它与正式基础密切相关,为我们提供了如何设计声音类型系统的更好指导。这将减少用户在未来的意外。
  •     
  • 其次,它具有基本功能的架构。这使得它更容易扩展,更容易纠正,并将导致更强大的API,其中编译器用作IDE和元编程的服务。
  •     
  
     

尽管Dotty开辟了许多有趣的语言可能性(特别是全谱依赖类型,la AgdaIdris),但Odersky选择优先考虑使其立即对社区有用。语言差异相当小,其中大部分是为了简化语言(如删除过程语法)或修复错误(不健全的模式匹配)或两者(早期初始化器)。

     

尽管如此,我无法抗拒地询问他是否有可能在某些时候在Scala中出现全谱依赖类型。以下是他所说的:

     
    

永远不要说永远:-)。事实上,我们目前正在与Viktor Kuncak合作,将Leon程序证明器与Scala集成,后者需要比现在更丰富的依赖类型。但它目前是严格的研究,具有完全开放的结果。

  
     

Scala和Dotty团队正在紧密合作Scala 2.x和Dotty,他们已经表明他们非常重视连续性。 Scala 2.12和2.13具有解锁在Dotty中孵化的特征的语言标记(例如,存在类型),并且Dotty编译器具有Scala 2兼容模式。甚至有migration tool