我一直在逐渐学习Haskell,甚至觉得我有一堆monad.然而,仍然有很多我不太理解的异国情调,比如Arrows,Applicative等.虽然我从Haskell代码中找到了点点滴滴,但我找到了一个真正解释的教程会很好他们完全.(似乎有几十个关于monad的教程......但是之后一切似乎都完成了!)
Tra*_*own 54
以下是我在"掌握"monad之后发现有用的一些资源:
最重要的是,深入研究您自己使用的任何Hackage库的代码.如果他们正在使用您不理解的语法或习语或扩展名,请查阅.
C. *_*ann 10
关于类型类:
Applicative
实际上比Monad
.我最近在别处说过一些关于它的事情,但要点是它是关于增强功能Functor
的,你可以将功能提升到.为了感受Applicative
,你可以尝试使用Parsec编写一些东西,而不使用do
符号 -我的经验是,对于简单的解析器,应用风格比monadic更好.
Arrow
s是一种非常抽象的处理类似函数的方法(类型之间的"箭头").在你偶然发现一些天生Arrow
的东西之前,他们可能很难理解.有一次,我Control.Arrow
在编写具有反馈循环的交互式状态机时重新发明了一半(很差).
你没有提到它,但是一个经常被低估,强大的类型是谦虚的Monoid
.有很多地方可以找到类似幺半群的结构.例如,看看monoids包.
除了类型类,我会为你的问题提供一个非常简单的答案:编写程序!学习的最佳方式是做,所以选择一些有趣或有用的东西,让它成为现实.
事实上,许多更抽象的概念 - 比如 - Arrow
如果你以后回到他们身上可能会更有意义,并且发现像我一样,他们为你遇到的问题提供了一个整洁的解决方案但是甚至没有实现可以被抽象出来.
但是,如果你想要特定的东西拍摄,为什么不看一下功能反应式编程 -这是一系列有很多承诺的技术,但是有很多未解决的问题是最好的方法它是.
归档时间: |
|
查看次数: |
3072 次 |
最近记录: |