Haskell中最重要的抽象是什么?单子? Applicatives?

时间:2011-05-14 17:50:02

标签: haskell haskell-platform

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

顺便说一下,我想在Haskell世界中了解最新情况,学习新概念,这是怎么做到的?

(原始标题是:“用于编码的库原语”,但这已被更改)

3 个答案:

答案 0 :(得分:19)

启动Haskell体验的最佳方式是安装The Haskell Platform,其中包含许多我们认为重要的库。

如果您查看基本系统中的抽象内容,您会看到一些值得学习的内容:

不要忘记强大的工具:

答案 1 :(得分:16)

要了解的基本库:

以数据为中心的通用库:

您应该知道的打包概念:

  • Monads,Monad Transformers(见基地,mtl)
  • 适用(见基础)
  • 箭头(见基地)
  • 软件交易记忆(stm
  • 可扩展的异常(in base,因为~GHC 6.8)
  • Haskell中的动态编程(参见基础中的Data.Typeable)
  • 引发(通过parallel的轻量级并行性提示)
  • 并发(参见基础中的Control.Concurrent)
  • 记事(monad-memoMemoTrie

半高级概念:

测试,基准测试和基础架构:

外部工具,GHC助手,GHC

  • threadscope
  • alex(lexer)
  • happy(解析器生成器)
  • haddock(文件系统)
  • Haskell计划覆盖范围(HPC
  • GHC手册,其中包含有关诸如此类的信息
    • 不同的后端
    • 仿形
    • 调试
    • 优化
    • 语言扩展

以类型为中心的知识

  • GADTs
  • Rank-N Types
  • Existentials
  • 功能依赖关系和类型系列
  • 此列表可以继续,但如果您了解上述内容,您将知道在哪里查看。

如何在不询问堆栈溢出问题的情况下及时了解Haskell:

  • 阅读ICFPPOPL
  • 接受的论文
  • 阅读ICFP和POPL拒绝的文件(如果能找到的话)
  • 连接社交网络,Haskellers似乎很重要
    • Twitter(首先关注跟随Galois或任何你知道的随机Haskeller的人)
    • Reddit
    • Stack Overflow(如果您需要链接,请给我发消息)
  • 阅读博客(从reddit或planet.haskell.org链接)
  • 关注haskell-cafe邮件列表或IRC
  • 上的对话
  • 参加Galois半周技术会谈

答案 2 :(得分:14)

我实际上已经根据它们的实际重要性描绘了一个与Haskell相关的事物的列表/分组;它看起来像这样:

Haskell Basics(任何事情都必需)

  • 功能
  • 部分申请,讨论
  • 递归
  • 高阶函数
  • 代数数据类型
  • 模式匹配
  • 类型类
  • 函子
  • IO monad

实际需要(你可能需要知道严肃工作的这些,即使你没有使用所有这些)

  • 单子
  • Monad变形金刚
  • FFI
  • Laziness / Strictness,BangPatterns和其他
  • GADTs
  • TypeFamilies
  • FunctionalDependencies

不是必要的,但可能有用

  • 应用型
  • 高等级多态性
  • OverlappingInstances
  • 镜头和备用唱片系统(fcLabels和其他)
  • Iteratees
  • Concurrent Haskell(forkIO,MVars,...)
  • 软件交易记忆
  • TemplateHaskell
  • 规则

课外(可能很有趣但完全没必要)