From 2c4cc3a6b574ef062385dc8f3fc5eb69c9560786 Mon Sep 17 00:00:00 2001 From: Lingkang Date: Wed, 4 Jan 2023 22:50:52 +0800 Subject: [PATCH] [TRANSLATE] Haskell MOOC (#376) * create haskell-mooc.en.md * translation done * fix a typo in CN version * translation done * update * fix typo --- .../Haskell-MOOC.en.md" | 38 +++++++++++++++++++ .../Haskell-MOOC.md" | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 "docs/\347\274\226\347\250\213\345\205\245\351\227\250/Haskell-MOOC.en.md" diff --git "a/docs/\347\274\226\347\250\213\345\205\245\351\227\250/Haskell-MOOC.en.md" "b/docs/\347\274\226\347\250\213\345\205\245\351\227\250/Haskell-MOOC.en.md" new file mode 100644 index 000000000..3ab66394f --- /dev/null +++ "b/docs/\347\274\226\347\250\213\345\205\245\351\227\250/Haskell-MOOC.en.md" @@ -0,0 +1,38 @@ +# Haskell MOOC + +## Descriptions + +- Offered by: University of Helsinki +- Prerequisites: None +- Programming Languages: Haskell +- Difficulty: 🌟🌟 +- Class Hour: Varying according to the learner + +Functional programming is increasingly being integrated into modern programming languages. Streams in Java, Promises in JavaScript, and Record & Tuple in the draft phase of ECMAScript... When I was learning these things, I always felt like I was memorizing the behaviours of their API, and although I was able to write some programs using them, I never felt like I had mastered them. Why do they exist? Why are they like that? What is the idea behind their design? Learning functional programming will give you the answer. + +Its core ingredient is functional programming. Just like Java is probably the default choice for teaching object-oriented programming. + +This course will teach just enough Haskell syntax, library functions, and a small number of tools to explain the core program semantics and the core idea of functional programming. This will save you time not getting bogged down in the details of the language and its ecology, which I think is the biggest advantage of the course. + +Topics covered in the course: + +- Pure Function +- Lazy Evaluation +- Strongly Typed +- Type Inferred +- Curry +- Monoid / Functor / Monad / Applicative + +If you have some programming experience, part 1 of the course is very easy. Most of the difficulties lie in part 2, after chap 13. Its exercises are great, which can give you a feeling of doing exercise of [CS61A](https://csdiy.wiki/%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8/CS61A/). There are enough hints in the comments and the solutions will be given to you after submission, and you can ask questions or discuss them with others in the official Telegram community. + +## Course Resources + +- Course Website: +- Recordings: None +- Textbooks: +- Assignments: +- Community: + +## Personal Resources + +All the resources and assignments used by @showtheunli in this course are maintained in [showthesunli/haskell-mooc - GitHub](https://github.com/showthesunli/haskell-mooc). (It is highly discouraged to refer to other people's implementations when working on assignments.) diff --git "a/docs/\347\274\226\347\250\213\345\205\245\351\227\250/Haskell-MOOC.md" "b/docs/\347\274\226\347\250\213\345\205\245\351\227\250/Haskell-MOOC.md" index 9e7cb304f..6e07ce825 100644 --- "a/docs/\347\274\226\347\250\213\345\205\245\351\227\250/Haskell-MOOC.md" +++ "b/docs/\347\274\226\347\250\213\345\205\245\351\227\250/Haskell-MOOC.md" @@ -12,7 +12,7 @@ 虽然这门课的名字是 Haskell,但它的核心内容是函数式编程思想。就像学习面向对象程序设计,大概率不会选择 Java 之外的语言。 -学习 Haskell,但不会去用它。这门课会让你用刚刚够用的 Haskell 语法,刚刚够用的库函数,一丁点的工具,去解释核心的程序语义,也就是函数式编程的核心思想。这不会让你浪费时间陷入语言细节以及语言生态中,我觉得它是这门课的最大优势。 +学习 Haskell,但重点不在于使用它。这门课会让你用刚刚够用的 Haskell 语法,刚刚够用的库函数,一丁点的工具,去解释核心的程序语义,也就是函数式编程的核心思想。这不会让你浪费时间陷入语言细节以及语言生态中,我觉得它是这门课的最大优势。 这门课覆盖的内容: