Kon*_*tov 106 monads haskell functional-programming scala
有许多功能习语:monad,applicatives,arrows等.它们记录在不同的文章中,但不幸的是我不知道任何书籍或文章在一个地方汇总(有Typeclassopedia但它有很多没有很好覆盖的区域).任何人都可以推荐一篇文章/书籍,它可以在一个地方很好地覆盖它们,并且具有FP中级技能的程序员可以访问它吗?
Edm*_*984 35
我的建议是,如果你想学习Scala,请阅读Paul Chiusano和Runar Bjarnason的书:
第二部分:功能设计和组合库
第三部分:功能设计模式
第四部分:打破规则:效果和I/O.
Ric*_* T. 31
对不起,我不知道哪些文章或书籍详细介绍了所有这些结构的不同用法,但我可以给你一些个人资源的链接.
一个非常常见的模式是构建monad变换器而不是简单的monad(参见下一段中的链接).它基本上意味着你构建了必须与其他monad组合的东西,导致更复杂的一个能够处理它们的功能.
在真实世界Haskell中有一些关于monad的章节.在第14章中,作者解释了基础知识和一些常见用法(可能是列表,状态).第15章使用monad进行编程提供了有关如何有效使用它们的更多解释(它也涵盖了读者monad).下一章解释了如何使用Parsec,但搜索包含它实际工作原理的文章可能更有趣:它应该是组织良好地使用monads进行解析的一个很好的例子.Fianlly,第18章 .Monad 变形金刚介绍monad变换器如何工作,然后逐步展示如何构建一个变换器.对本章最后部分的考虑也很有趣.
我曾经读过一篇关于monad创造性使用的非常有趣的问题.建议的链接是关于该主题的精彩读物.凭借这种精神,我试图向箭头问相同:我肯定得到的答案少于单子上的答案,但有趣的是.
关于四人帮的OOP模式,IBM在他们的功能思维系列中有一篇关于该主题的3篇文章.目标函数语言是Scala.他们通过解释OOP中的常用设计模式并展示它们如何映射到Scala来继续.
最相关的文章是你的问题肯定是第一个,但其他两个可能是有趣的相关读数.
很多FP的东西都发布在Oleg的网站上:http: //okmij.org/ftp/
关于来自Josh Suereth的FP模式的演讲:http://jsuereth.com/intro-to-fp/
第6章介绍了地图和折叠,它们是功能语言中两个比较重要的"设计模式".
第11-13章按顺序包括Functors,Applicative Functors和Monads.这很有用 - 许多教程介绍Functors然后Monads,然后在最后添加Applicative Functors(如果它们完全覆盖它).LYAH中的顺序更好,因为从Functors移动=> Applicative Functors => Monads会让你逐渐走上普遍性和权力的阶梯.
第14章介绍Zippers - 您可以有效地将这些视为带有指向特定数据的指针的容器类,这意味着您可以在指针位置获得O(1)访问和更新.
它不包括Arrows或Comonads,它们是Haskell中更高级的主题.要了解如何以及为何使用Arrows或Comonads,你肯定应该牢牢掌握Monads,所以我认为这不是问题--LYAH坚定地瞄准Haskell市场的初学者.
归档时间: |
|
查看次数: |
9788 次 |
最近记录: |