2010-02-10 35 views

回答

12

您可能想查看scalaz;它受到了Haskell的強烈影響。事實上,經常有人問他們爲什麼他們不是只是使用Haskell的,因爲他們似乎非常喜歡它!

斯卡拉爲了用他們的monads來裝飾結構而大量使用了implicits。例如:

val fibs = (0, 1).iterate[Stream](i => i._2 -> (i._2 + i._1)).map(_._1) 
println(fibs.take(10)) 
+0

其實對我的問題@VonC評論給了我更多的細節。但我不能接受這個答案,@oxbow_lakes也給了我一些新的東西。謝謝你們的幫助 –

+0

順便說一句:斯卡拉斯*的作者*使用Haskell。例如,如果您查看Scalaz的源代碼,您會看到他們使用Haskell代替Ant構建系統。另外,Tony Morris(主要作者)*是一位非常知名的Hakell程序員。他還是FunctionalJava的作者,這是一個爲Java實現Functors,Applicative Functors,Bifunctors,Monads,Comonads和Arrows的庫(就像Scalaz爲Scala所做的那樣)。至於爲什麼要使用Scala:Scala的類型系統和語言實際上在幾個比Haskell更強大和更有表現力的領域。 –

+0

@Jorg - 重點改變了 - 我知道託尼使用Haskell,我暗示它已被問及他爲什麼會使用scala! –

9

我認爲值得注意的是,Scala的「換理解」等同於Haskell的單子「做」

0

兩個選項和列表中的單子。我也相信任何一個的左右投影都是monads。

0

有Scala的標準庫單子沒有明確的概念(沒有合適的特質/類或類型類)。

Scala用這種特殊方式進行處理,詳情請參閱Scala by example部分以瞭解詳情