在哪里可以学习先进的Haskell?

one of my answers的评论中,SO用户sdcwc基本上指出了以下代码:

comb 0 = [[]]

comb n =
    let rest = comb (n-1)
    in  map ('0':) rest
     ++ map ('1':) rest

可以替换为:

comb n = replicateM n "01"

这让我完全震惊。

现在我正在寻找教导这些高级概念的教程,书籍或PDF。我不是在寻找一个针对初学者或在线参考的“什么是monad”教程来解释replicateM的类型。我想学习如何在单子中思考并有效地使用它们,如果你愿意,一元的“模式”。

从我的观点(这当然不是普遍的),我对列表monad无动于衷 – 在你的例子中,我(弱)认为,由于有很多列表功能,它是一个巧合,解决方案是一个单一的功能,而不仅仅是列表功能(或通过Data.Traversable或Data.Foldable功能的列表的泛化)。

对于单态模式,我更多地关注效果比特定组合器 – 状态模型读写状态,读卡器模型只读“状态”,Writer模型只写“状态”,也许模型偏差(所以它可以模拟错误而没有错误消息) ,任何/错误模型错误与有形的错误代码或消息。当你得到一个效果的处理 – 你很快意识到,你需要组合它们,所以单变量变压器变得重要。

除了“编程的乐趣”之外,高级Haskell还没有任何书籍 – 这是一本多作者书籍,收集了一些相当不同的作品,所以值得浏览一个副本,然后再决定一本书是否需要。理查德·伯德(Richard Bird)的新书有许多高级编码的例子,但它使用简单优雅的代码来实现。它是一本很好的书,虽然它不是一本关于高级语言功能的书。

在没有书的情况下,文章是比博客更好的地方。最相关的是Haskell研讨会(以前称为Haskell研讨会),请查看下面的链接以列出所提交论文的程序,然后搜索您感兴趣的内容 – 在大多数情况下,作者将该文件公开可用。

http://haskell.org/haskell-symposium/

http://stackoverflow.com/questions/4634962/where-can-i-learn-advanced-haskell

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在哪里可以学习先进的Haskell?