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

tel*_*one 20 haskell haskell-platform

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

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

(最初的标题是:"用于编码的库原语",但这已被更改)

Don*_*art 19

启动Haskell体验的最佳方式是安装Haskell平台,该平台包含许多我们认为重要的库.

如果你看看基本系统中有哪些抽象,你会看到一些值得学习的东西:

不要忘记强大的工具:

  • 你可能会转向一些好的资源:[非常好地了解Haskell!](http://learnyouahaskell.com),以及更高级的[FP中的模式](http://patternsinfp.wordpress.com/). (2认同)

Tho*_*son 16

要了解的基本库:

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

您应该知道的打包概念:

  • Monads,Monad变形金刚(见基地,mtl)
  • 适用(见基数)
  • 箭头(见基地)
  • 软件事务内存(stm)
  • 可扩展的例外(基于 ~GHC 6.8)
  • Haskell中的动态编程(参见基础中的Data.Typeable)
  • 引发(通过并行的轻量级并行性提示)
  • 并发(参见base.Concurrent)
  • 记忆(monad-memo,MemoTrie)

半高级概念:

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

外部工具,GHC助手,GHC

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

以类型为中心的知识

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

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

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


gla*_*erl 14

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

Haskell Basics(任何必要的东西)

  • 功能
  • 部分应用,currying
  • 递归
  • 高阶函数
  • 代数数据类型
  • 模式匹配
  • 输入类
  • 函子
  • IO monad

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

  • 单子
  • Monad变形金刚
  • FFI
  • 懒惰/严格,BangPatterns和其他
  • GADTs
  • TypeFamilies
  • FunctionalDependencies

不是必要的,但可能有用

  • 合用的
  • 高秩多态性
  • OverlappingInstances
  • 镜头和备用唱片系统(fcLabels和其他)
  • Iteratees
  • 并发Haskell(forkIO,MVars,...)
  • 软件事务内存
  • TemplateHaskell
  • 规则

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