Haskell 中最重要的抽象是什么?单子?应用性?

发布于 2024-11-07 10:09:26 字数 1431 浏览 4 评论 0 原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嗳卜坏 2024-11-14 10:09:26

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

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

并且不要忘记强大的工具:

The best way to start your Haskell experience is to install The Haskell Platform, which has many of the libraries we think are important.

If you look at what abstractions ship in the base system, you'll see some things worth learning:

And don't forget the powerful tools:

守护在此方 2024-11-14 10:09:26

要了解的基本库:

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

您应该了解的打包概念:

  • Monad、Monad Transformers(请参阅 base、mtl)
  • 应用程序(请参阅 base)
  • 箭头(请参阅 base)
  • 软件事务内存 (stm)
  • 可扩展异常 (自 ~GHC 6.8 起在基地
  • Haskell 中的动态编程(请参阅基础中的 Data.Typeable)
  • Sparking(通过 并行
  • 并发(请参阅基础中的 Control.Concurrent)
  • 记忆化(monad-memoMemoTrie)

半高级概念:

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

外部工具、GHC 帮助程序、GHC

  • threadscope
  • alex (词法分析器)
  • happy(解析器生成器)
  • haddock(文档系统)
  • Haskell 程序覆盖范围 (HPC)
  • GHC 手册,其中包括以下信息:
    • 不同的后端
    • 分析
    • 调试
    • 优化
    • 语言扩展

以类型为中心的知识

  • GADT
  • Rank-N 类型
  • 存在
  • 函数依赖关系和类型家族
  • 这个列表可以一直列下去,但是如果您了解上述内容,您就会知道该去哪里查找。

如何在不提出堆栈溢出问题的情况下了解 Haskell 的最新动态:

  • 阅读 ICFPPOPL
  • 阅读 ICFP 和 POPL 拒绝的论文(如果你能找到它们)
  • Haskellers 似乎热衷于社交网络
    • Twitter(首先关注关注 Galois 或您认识的任意 Haskeller 的人)
    • Reddit
    • Stack Overflow(如果您需要链接,请给我留言)
  • 阅读博客(从 reddit 链接或 planet.haskell.org)
  • 关注 haskell-cafe 上的对话邮件列表或 IRC
  • 参加伽罗瓦半周技术讲座

Basic libraries to know:

Common data-centric libraries:

Packaged concepts that you should know:

  • Monads, Monad Transformers (see base, mtl)
  • Applicative (see base)
  • Arrows (see base)
  • Software Transactional Memory (stm)
  • Extensible Exceptions (in base since ~GHC 6.8)
  • Dynamic programming in Haskell (See Data.Typeable in base)
  • Sparking (light-weight parallelism hints via parallel)
  • Concurrency (see Control.Concurrent in base)
  • Memoization (monad-memo, MemoTrie)

Semi-advanced concepts:

Testing, benchmarking, and infrastructure:

External tools, GHC helpers, GHC

  • threadscope
  • alex (lexer)
  • happy (a parser generator)
  • haddock (documentation system)
  • Haskell Program Coverage (HPC)
  • GHC manual, which includes information on things like
    • Different back-ends
    • Profiling
    • Debugging
    • Optimization
    • Language extensions

Type-centric knowledge

  • GADTs
  • Rank-N Types
  • Existentials
  • Functional Dependencies and Type Families
  • This list can go on and on, but you'll know where to look if you know the above.

How to stay up-to-date on Haskell without asking a stack-overflow question:

  • Read the papers accepted by ICFP and POPL
  • Read the papers rejected by ICFP and POPL (if you can find them)
  • Connect on the social networks, Haskellers seem big on
    • Twitter (start by following whoever follows Galois or any random Haskeller you know)
    • Reddit
    • Stack Overflow (message me if you need a link)
  • Read blogs (linked from reddit or planet.haskell.org)
  • Follow conversations on the haskell-cafe mailing list or IRC.
  • Attend Galois semi-weekly tech talks
风月客 2024-11-14 10:09:26

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

Haskell基础知识(任何事情都必需的)

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

实用必需品(您可能需要了解这些才能进行严肃的工作,即使也许你不会全部使用它们)

  • Monads
  • Monad Transformers
  • FFI
  • Laziness/Strictness、BangPatterns 以及其他
  • GADT
  • 类型族
  • 功能依赖性

不一定是必要的,但可能有用

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

课外活动(可能令人着迷,但完全不同)不必要)

I actually sketched a list/grouping of Haskell-related things by their practical importance a while ago; it looks like this:

Haskell Basics (necessary for anything)

  • Functions
  • Partial application, currying
  • Recursion
  • Higher order functions
  • Algebraic datatypes
  • Pattern matching
  • Type classes
  • Kinds
  • Functors
  • the IO monad

Practical Necessities (you'll probably need to know about these for Serious Work, even if per chance you don't use all of them)

  • Monads
  • Monad Transformers
  • The FFI
  • Laziness/Strictness, BangPatterns and the rest
  • GADTs
  • TypeFamilies
  • FunctionalDependencies

Not Necessarily Necessary, But Probably Useful

  • Applicative
  • Higher-Rank Polymorphism
  • OverlappingInstances
  • Lenses and alternate record systems (fcLabels and the rest)
  • Iteratees
  • Concurrent Haskell (forkIO, MVars, ...)
  • Software Transactional Memory
  • TemplateHaskell
  • RULES

Extracurricular (potentially fascinating but wholly unnecessary)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文