2016-12-07 60 views
7

this question從2013年開始,Odersky的先生指出,「這是爲時過早」像Scalaz庫是否能夠存在(至少在其目前的狀態)斑點狗下,由於較高kinded和生存類型的閹割。Dotty將如何改變Scala中的純函數式編程?

在經過的時候,已經斑點狗對Scalaz &貓意義闡明?將建議的功能(如內置效果和記錄)是否會改變這些項目的範圍?我知道Dotty仍然是取代Scalac的一種方法,但由於我正在考慮投入時間將純功能性構造和方法應用於我的工作,因此我認爲考慮其旗艦圖書館的未來至關重要。最新的斑點狗

+2

我認爲可以肯定地說,如果Dotty的成熟形式使得你在貓,無形等等中找到的抽象成爲可能_impossible_(即從根本上不可能,即使有重大改寫也可能有一些妥協),那將分散社區,Scala 2將無限期地與Scala 3並存。我不知道這種情況發生的可能性有多大(我的猜測並不是這樣),但是斯卡拉斯風格的FP在Scala上沒有任何改變。 –

回答

3

一個例子是「Scaling Scala」克里斯·麥金利(2016年12月15日)(同一篇文章中還提到了Scalaz和貓的情況)

Martin Odersky已經在Dotty領導工作,基於該Dependent Object Types(DOT)微積分(斯卡拉的基本上是一個簡化版本)和ideas從函數式編程(FP)數據庫社區新的研究編譯器。

的團隊斑點狗開發工作已經顯示在現有技術的一些顯着改善,最明顯的是相對於編譯時間。我問了Odersky他對Dotty架構的看法,並且會幫助最終用戶。以下是他說:

兩件事情浮現在腦海中:

  • 首先,這是密切相關的正式基礎,使我們對如何設計一個完善的類型系統更好的指導。這將會減少路上用戶的意外。
  • 其次,它具有基本上功能體系結構。這使得它更容易擴展,更容易得到正確的,而且會導致編譯器在哪裏被用作IDE和元編程服務更健壯的API。

雖然斑點狗開闢了許多有趣的語言的可能性(特別是全光譜依賴類型,一拉AgdaIdris),Odersky的選擇了優先使其可以立即投入使用的社區。語言差異相當小,其中大部分是爲了簡化語言(如刪除過程語法)或修復錯誤(不健全的模式匹配)或兩者(早期初始化)。儘管如此,我還是忍不住問他是否有機會在Scala的某個時候出現全譜依賴類型。這是他說的:

永遠不要說永遠:-)。實際上,我們目前正在與Viktor Kuncak合作,將Leon程序證明程序與Scala結合起來,Scala需要比現在更豐富的依賴類型。但它目前嚴格的研究,完全公開的結果。

斯卡拉和Dotty團隊正在密切合作爲斯卡拉2.x和Dotty融合,他們已經表明,他們非常重視連續性。 Scala 2.12和2.13有語言標誌,可解鎖在Dotty中孵化的功能(例如,,存在類型),並且Dotty編譯器具有Scala 2兼容模式。甚至有一個migration tool