有许多功能习语:monad,applicatives,arrows等.它们记录在不同的文章中,但不幸的是我不知道任何书籍或文章在一个地方汇总(有Typeclassopedia但它有很多没有很好覆盖的区域).任何人都可以推荐一篇文章/书籍,它可以在一个地方很好地覆盖它们,并且具有FP中级技能的程序员可以访问它吗?
我对函数式编程中使用的monad和箭头的概念非常熟悉.我也明白它们可以用来解决类似的问题.
但是,对于如何选择在任何给定情况下使用哪一个,我仍然有点困惑.
我什么时候应该使用monads?什么时候应该使用箭头?
language-agnostic monads haskell functional-programming arrows
我一直试图控制箭头,因为它们是大多数FRP实施的基础.我想我理解了它的基本思想 - 它们与monad有关但在每个绑定操作符中存储静态信息,因此您可以遍历一系列箭头并查看静态信息,而无需评估整个箭头.
但是,在我们开始讨论第一,第二和交换时,我迷路了.2元组与箭头有什么关系?教程提供了元组的东西,好像它是明显的下一步,但我并没有真正看到连接.
就此而言,箭头语法直观地意味着什么?
我正在寻找monads的创造性用途来学习.我已经读过某些地方,例如在AI中使用monad,但作为monad新手,我看不清楚如何.
请提供源代码和示例用法的链接.请不要标准单子.