我在Haskell有一些經驗,目前正在學習斯卡拉。我想知道在Scala中是否有相當於Monads的東西?斯卡拉相當於哈斯克爾monads
回答
您可能想查看scalaz;它受到了Haskell的強烈影響。事實上,經常有人問他們爲什麼他們不是只是使用Haskell的,因爲他們似乎非常喜歡它!
斯卡拉爲了用他們的monads來裝飾結構而大量使用了implicits。例如:
val fibs = (0, 1).iterate[Stream](i => i._2 -> (i._2 + i._1)).map(_._1)
println(fibs.take(10))
其實對我的問題@VonC評論給了我更多的細節。但我不能接受這個答案,@oxbow_lakes也給了我一些新的東西。謝謝你們的幫助 –
順便說一句:斯卡拉斯*的作者*使用Haskell。例如,如果您查看Scalaz的源代碼,您會看到他們使用Haskell代替Ant構建系統。另外,Tony Morris(主要作者)*是一位非常知名的Hakell程序員。他還是FunctionalJava的作者,這是一個爲Java實現Functors,Applicative Functors,Bifunctors,Monads,Comonads和Arrows的庫(就像Scalaz爲Scala所做的那樣)。至於爲什麼要使用Scala:Scala的類型系統和語言實際上在幾個比Haskell更強大和更有表現力的領域。 –
@Jorg - 重點改變了 - 我知道託尼使用Haskell,我暗示它已被問及他爲什麼會使用scala! –
我認爲值得注意的是,Scala的「換理解」等同於Haskell的單子「做」
兩個選項和列表中的單子。我也相信任何一個的左右投影都是monads。
有Scala的標準庫單子沒有明確的概念(沒有合適的特質/類或類型類)。
Scala用這種特殊方式進行處理,詳情請參閱Scala by example的部分以瞭解詳情。
- 1. 斯卡拉相當於哈斯克爾的序列
- 2. 哈斯克爾相當於Boost.Fusion
- 3. 在哈斯克爾混合Monads
- 4. 用哈斯克爾monads瞭解範圍
- 5. 哈斯克爾和懶Monads評價
- 6. 哈斯克爾卡過濾
- 7. 哈斯克爾
- 8. 哈斯克爾
- 9. 哈斯克爾
- 10. 哈斯克爾:當顯示
- 11. .pop()相當於斯卡拉
- 12. 斯卡拉相當於User.class
- 13. 問計一類的實物斯卡拉VS哈斯克爾
- 14. 斯卡拉等值的哈斯克爾號
- 15. 斯卡拉執行哈斯克爾最後一個方法
- 16. 在哈斯克爾
- 17. 在哈斯克爾
- 18. 在哈斯克爾
- 19. Control.Monad.Writer哈斯克爾
- 20. 哈斯克爾 - div`
- 21. 在哈斯克爾
- 22. Control.Monad.State哈斯克爾
- 23. zipWith哈斯克爾
- 24. 在哈斯克爾
- 25. 哈斯克爾Monad.Writer
- 26. 哈斯克爾 - 布爾RoseTree
- 27. 哈斯克爾嵌套讓拉姆達
- 28. 哈斯克爾:與埃拉托色尼
- 29. 什麼是弗雷格相當於哈斯克爾的分數?
- 30. 哈斯克爾相當於Ruby的slice_when的
你認爲http://stackoverflow.com/questions/1992532/monad-trait-in-scala? – VonC