2018-03-12 06:01:41 +00:00
|
|
|
|
# 前言
|
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
这是一条推荐的 Haskell 学习路线,是从帮助他人的经验中总结而来。书籍 [Haskell Book](http://haskellbook.com/) 的作者之一提供了一个推荐清单。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
#### *别在不懂的地方打转,先继续读下去!*
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
|
|
|
|
## 社群
|
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
IRC 频道:Freenode 上的 `#haskell-beginners`。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
IRC web 版[客户端](http://webchat.freenode.net/)。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
Haskell [邮件群组](https://wiki.haskell.org/Mailing_lists)。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
|
|
|
|
### 社群参与原则
|
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
阅读我们的[社群参与原则](coc.md),了解在 IRC 频道应遵守的原则。不明显的攻讦行为将会被警告。须知,这个频道是专为学习和教授 Haskell 的人准备的。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2018-07-04 14:58:50 +00:00
|
|
|
|
# 安装Haskell
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2018-07-04 14:58:50 +00:00
|
|
|
|
## 通过 Stack 使用 Haskell
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
获取 [Stack](http://haskellstack.org) 以安装 GHC,构建你的项目。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
如果你不了解 Stack,又需要它的概述,可观看[视频:全面的 Stack 新手指南](https://www.youtube.com/watch?v=sRonIB8ZStw)。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
## 以及,不要安装 HASKELL PLATFORM
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
直接使用 Stack,不要遵循 Haskell.org 里面的说明。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2018-07-04 14:58:50 +00:00
|
|
|
|
### 为什么不用 platform?
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2018-07-04 14:58:50 +00:00
|
|
|
|
https://mail.haskell.org/pipermail/haskell-community/2015-September/000014.html
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
# 我该如何学习 Haskell?
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
核心推荐是,阅读 cis194 课程(2013 年秋冬学期版)的讲义并完成所有习题和作业,然后是 FP 课程。它们都在下方列出。所有其他都可视作可选项,列出来仅作资料指南用。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
## Haskell 编程的第一要义
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
[@dmvianna](https://github.com/dmvianna) 让我转达,下面列出的只是推荐资源中*免费*的部分。如果你愿意看看一本书,衷心推荐我们自己的 [Haskell Book](http://haskellbook.com/)!如果你因为某些原因买不起该书,请使用[支持页面](http://haskellbook.com/support.html)里的联系方式发邮件给我们。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
### Haskell Book 书覆盖了这里列出的全部基础资料
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
## Yorgey 的 cis194 课程
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
> 如果你不用 Haskell Book,就*先学习*本课程,它是最好的免费 Haskell 入门介绍。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
从这里[在线](http://www.seas.upenn.edu/~cis194/spring13/lectures.html)获取。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
[Brent Yorgey](https://byorgey.wordpress.com) 的课是我目前所知中最好的。它之所以好,是因为
|
|
|
|
|
不仅教基础知识,还教解析器组合子(parser combinators)。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
如果你不是程序员,或缺乏经验,那么这门课可能没这么适合。建议你从
|
|
|
|
|
[Thompson 的这本书](http://www.haskellcraft.com/craft3e/Home.html)开始,然后再转到 cis194。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
## FP 课程
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
> 这是我们推荐的,完成 Yorgey 的 cis194 课程后的后续课程。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
这门课可从 github [获取](https://github.com/bitemyapp/fp-course)。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
透过实现 cis194 中介绍过的种种抽象表述,这门课会让你对 Haskell 有更深入的了解。这样的练习对于
|
|
|
|
|
熟悉 Haskell 中日常要面对的 Functor/Applicative/Monad 等等至关重要。
|
|
|
|
|
先学 cis194,然后是 FP,是这整篇 Haskell 学习导览的核心,也是我教每个人 Haskell 的方式。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
## 在 cic194 和 FP 课程之后的补充课程
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
> 该课程提供更多中级材料
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
cs240h 可从线上获取
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
* [2014 年春夏学期版](http://www.scs.stanford.edu/14sp-cs240h/)
|
|
|
|
|
* [2016 年秋冬学期版](http://www.scs.stanford.edu/16wi-cs240h/)
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
这是 [Bryan O'Sullivan](https://github.com/bos) 在斯坦福所教课程的线上版。
|
|
|
|
|
如果你不知道他是谁,去翻翻 Haskell 的库吧!几乎一半以上常用的套件都有他的名字。
|
|
|
|
|
如果你已经完成了 Yorgey 的课程,特别值得一提的是关于 phantom types、information flow control、language extensions、concurrency、pipes 和 lenses 的模块。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
# 补充资料
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
这些资料不像 cis194 和 FP 课程那样经过了学习着共同的把关和评测,它们的链接都在[主题清单](/specific_topics.md)里,方便你知道从哪里开始。它们涉及中级和高级的概念和其他主题/领域,比如工具软件和文本编辑器。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
## 译著
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
这一部分的旧版中译可从[这里](https://github.com/bitemyapp/learnhaskell/blob/213dcb9decdce7f6f472247f0d4b82447e015f1d/guide-zh_CN.md#---do--list-comprehension%E7%AE%80%E4%BE%BF%E8%AF%AD%E6%B3%95%E5%88%B0%E5%BA%95%E6%98%AF%E4%BB%80%E4%B9%88)获得。
|
2018-03-12 06:01:41 +00:00
|
|
|
|
|
|
|
|
|
> 有部分已在本文提及
|
|
|
|
|
|
|
|
|
|
- [Essential Haskell Reading List](http://www.stephendiehl.com/posts/essential_haskell.html)
|
|
|
|
|
|
|
|
|
|
## 对话记录
|
|
|
|
|
|
|
|
|
|
> 在[本储存库中](dialogues.md)。
|
|
|
|
|
|
2019-01-15 23:40:16 +00:00
|
|
|
|
里面包含相当重要而有帮助的信息,可协助你深入了解许多不同的主题。
|