20

我想知道我绝对应该知道哪些库、函数和概念以及如何使用。Monad 和那里的函数是典型的例子,但是在编码中还有其他好的原语可以使用,比如 Arrows、Applicative,......他们是谁?

顺便说一句,我想在 Haskell 世界中保持最新状态,学习新概念,这是怎么做到的?

(原标题是:“Library primitives for coding”,后来改了)

4

3 回答 3

18

开始您的 Haskell 体验的最佳方式是安装Haskell 平台,其中包含许多我们认为很重要的库。

如果您查看基本系统中包含哪些抽象,您会发现一些值得学习的东西:

不要忘记强大的工具:

于 2011-05-14T17:53:13.020 回答
16

要了解的基本库:

常见的以数据为中心的库:

你应该知道的打包概念:

  • Monads, Monad Transformers (见 base, mtl)
  • 适用(见基数)
  • 箭头(见底座)
  • 软件事务内存 ( stm )
  • 可扩展异常(~GHC 6.8 之后的基础中)
  • Haskell 中的动态编程(参见基础中的 Data.Typeable)
  • Sparking(通过并行的轻量级并行提示)
  • 并发(参见 Control.Concurrent in base)
  • 记忆化 ( monad-memo , MemoTrie )

半高级概念:

测试、基准测试和基础设施:

外部工具、GHC 助手、GHC

  • 螺纹镜
  • 亚历克斯 (词法分析器)
  • 快乐(解析器生成器)
  • 黑线鳕(文档系统)
  • Haskell 程序覆盖 ( HPC )
  • GHC手册,其中包括诸如
    • 不同的后端
    • 剖析
    • 调试
    • 优化
    • 语言扩展

以类型为中心的知识

  • GADT
  • Rank-N 类型
  • 存在主义
  • 功能依赖和类型族
  • 这个列表可以继续下去,但如果你知道上面的内容,你就会知道去哪里看。

如何在不询问堆栈溢出问题的情况下在 Haskell 上保持最新状态:

  • 阅读ICFPPOPL接受的论文
  • 阅读被 ICFP 和 POPL 拒绝的论文(如果你能找到的话)
  • 连接社交网络,Haskellers 似乎很受欢迎
    • Twitter(首先关注关注 Galois 或任何你认识的随机 Haskeller 的人)
    • 红迪网
    • 堆栈溢出(如果您需要链接,请给我留言)
  • 阅读博客(链接自 reddit 或planet.haskell.org
  • 关注haskell-cafe邮件列表或IRC上的对话。
  • 参加 Galois 半周技术讲座
于 2011-05-14T18:18:29.107 回答
14

实际上,不久前,我根据实际重要性勾勒出了与 Haskell 相关的事物的列表/分组;它看起来像这样:

Haskell Basics(任何事情都需要)

  • 功能
  • 部分应用,柯里化
  • 递归
  • 高阶函数
  • 代数数据类型
  • 模式匹配
  • 类型类
  • 种类
  • 函子
  • IO 单子

实用必需品(您可能需要了解这些以进行认真的工作,即使您有机会不使用所有这些)

  • 单子
  • 单子变形金刚
  • 外国金融机构
  • 懒惰/严格,BangPatterns 和其他
  • GADT
  • 类型家庭
  • 功能依赖

没有必要,但可能有用

  • 适用的
  • 高阶多态性
  • 重叠实例
  • 镜头和备用记录系统(fcLabels 和其他)
  • 迭代者
  • 并发 Haskell (forkIO, MVars, ...)
  • 软件事务内存
  • 模板Haskell
  • 规则

课外活动(可能很吸引人,但完全没有必要)

于 2011-05-14T19:18:32.563 回答