cs-self-learning/docs/编程入门/Functional/Haskell-MOOC.md
Yinmin Zhong 4979ddabbe
[UPDATE] Reorganize the intro to programming section (#593)
* reorganize intro to programming

* nits

* nits
2024-04-14 00:55:13 +08:00

38 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Haskell MOOC
## 课程简介
- 所属大学University of Helsinki
- 先修要求:无
- 编程语言Haskell
- 课程难度:🌟🌟
- 预计学时:因人而异
函数式编程正在越来越多的融合入现代编程语言。Java 的 StreamsJavaScript 的 Promises以及在 ECMAScript 草案阶段的 Record & Tuple。在学习这些内容时我总是感觉我在死记它们这些 api 的行为,虽然能够使用它们写出一些程序,但总感觉不到掌握了它们。究其原因,它们为什么存在?它们为什么是这样的?设计它们的思想是什么?学完函数式编程会给你答案。
虽然这门课的名字是 Haskell但它的核心内容是函数式编程思想。就像学习面向对象程序设计大概率不会选择 Java 之外的语言。
学习 Haskell但重点不在于使用它。这门课会让你用刚刚够用的 Haskell 语法,刚刚够用的库函数,一丁点的工具,去解释核心的程序语义,也就是函数式编程的核心思想。这不会让你浪费时间陷入语言细节以及语言生态中,我觉得它是这门课的最大优势。
这门课覆盖的内容:
- Pure Function
- Lazy Evaluation
- Strongly Typed
- Type Inferred
- Curry
- Monoid / Functor / Monad / Applicative
如果你有编程经验,课程的 Part1 很简单,难度集中在 Part2 的十三章之后。课程的练习很棒,它有一种在做 [CS61a](https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/) 练习的感觉。练习的注释中有足够的提示,作业在你提交之后会给你标准答案,你还可以在官方的 Telegram 中提问或与他人讨论。
## 课程资源
- 课程网站:<https://haskell.mooc.fi/>
- 课程视频:无
- 课程教材:<https://haskell.mooc.fi/>
- 课程作业:<https://github.com/moocfi/haskell-mooc>
- 社区:<https://t.me/haskell_mooc_fi>
## 资源汇总
@showtheunli 在学习这门课中用到的所有资源和作业实现都汇总在 [showthesunli/haskell-mooc - GitHub](https://github.com/showthesunli/haskell-mooc) 中。(非常不建议在作业时,参考别人的实现)