函数式编程
MIT6.001: Structure And Interpretation Of Computer Programs
- 所属大学:MIT
- 编程语言: Scheme
大名鼎鼎的「计算机程序的构造与解释」,笔者认为这是每个程序员都应该学习的课程,它真正能教会你编程,而不只是写代码。如果想深刻理解计算机程序设计,那么这门课不容错过。
CS3110: OCaml Programming Correct + Efficient + Beautiful
- 所属大学:Cornell
- 编程语言:OCaml
CS3110 不仅局限于函数式编程,更是将理论和实用充分结合。课程内容更进一步,涵盖了 OCaml 语言基础,数据结构和算法,测试开发,形式证明,语言特性实现等诸多内容。而且内容之间并不割裂,而是递进和互补,非常值得学习。
Haskell MOOC
- 所属大学:University of Helsinki
- 编程语言:Haskell
函数式编程正在越来越多的融合入现代编程语言。JavaScript 的 Promises、Swift 中的 ADT 和 MoonBit 语言的函数式循环等。在学习这些内容时,我们得以窥探函数式编程的一点魅力,但只见树木不见森林,为真正了解函数式编程的全貌, 学习 Haskell 是一个不可避的槛。
虽然这门课的名字是 Haskell,但它的核心内容是函数式编程思想。就像学习面向对象程序设计,大概率不会选择 Java 之外的语言。
学习 Haskell,但重点不在于使用它。这门课会让你用刚刚够用的 Haskell 语法,刚刚够用的库函数,一丁点的工具,去解释核心的程序语义,也就是函数式编程的核心思想,也会涉及到 Monoid / Functor / Monad / Applicative 一些相对高级的抽象。
推荐书籍 / 论文 / 视频
函数式编程语言通常非常理论化,读完一两本入门书籍之后可能还只是了解冰山一角。读论文也是不可避免的,以下会列出一些优秀的参考资料,读者在有一定基础之后可以自行选择喜欢的课题学习。
- Books
- [Bird and Wadler](http://usi-pl.github.io/lc/sp-2015/doc/Bird_Wadler. Introduction to Functional Programming.1ed.pdf) - Introduction to Functional Programming, 1st Edition - Bird and Wadler
- AoP - The Algebra of Programming - Richard Bird, Oege de Moor
- Programming in Haskell — Graham Hutton (2007)
- RWH - Real World Haskell - Bryan O’Sullivan, Don Stewart, and John Goerzen
- FPiS - Functional Programming in Scala - Paul Chiusano and Rúnar Bjarnason
- SICP, Structure and Interpretation of Computer Programs, by Abelson, Sussman, and Sussman
- PCPH - Parallel and Concurrent Programming in Haskell - Simon Marlow
- RWOC - Real World OCaml - Jason Hickey, Anil Madhavapeddy, and Yaron Minsky
- Developing Applications With OCaml — Emmanuel Chailloux, Pascal Manoury and Bruno Pagano (2000)
- BTLS - The Little Schemer - Daniel P. Friedman, Matthias Felleisen
- BTSS - The Seasoned Schemer - Daniel P. Friedman, Matthias Felleisen
- BTML - The Little MLer - Matthias Felleisen, Daniel P. Friedman
- The Reasoned Schemer and miniKanren
- HTDP - How to Design Programs - Matthias Felleisen, Robert Findler, Matthew Flatt, Shriram Krishnamurthi
- HR - The Haskell Road to Logic, Maths and Programming - 2nd Ed. - Kees Doets, Jan van Eijck pdf
- A Book of Abstract Algebra - 2nd Ed. - Charles C. Pinter booko
- Purely Functional Data Structures - Chris Okasaki phd-thesis in pdf paperback@booko More purely functional data structures
- Papers
- Lambda Papers - Lambda: The Ultimate Imperative/Declarative/GOTO - Guy Steele and Gerald Sussman
- The Lambda Calculus - Jesse Alama and Johannes Korbacher
- A Tutorial Introduction to the Lambda Calculus - Raul Rojas
- Exploring Generic Haskell (PhD thesis) - Andres Löh. This an epic, accessible, book-length PhD on datatype generic programming.
- ICFP accepted papers
- Videos