这本书在将函数式编程(FP)应用于 JavaScript 的同时探索它的核心原理。但是这本书与众不同的是,我们讲解这些原理的方式不会沉浸在所有那些专门术语中。我们将关注于一个我称之为 “轻量函数式编程” 的 FP 基础概念子集,并将它应用在 JavaScript 上。
注意: 尽管在标题中出现了 “轻量” 一词,但我不认为或推荐将这本书看做一本在这个话题上的 “入门”、“简易”、或者 “介绍” 书籍。这本书十分缜密而且充满了细节;它希望读者在深入之前有坚实的 JS 知识基础。“轻量” 意味着在范围上的限制;取代更加广泛讨论的是,这本书与你经常能够看到的其他 FP-JavaScript 书籍相比在每一个话题上都要深入得多。
让我们直面这个问题:除非你已经是 FP 酷小子俱乐部的一员(我不是!),那么像 “单子只是自函子范畴中的幺半群” 这样的话对我们不意味着任何有用的东西。
这不是说这些名词 没有 意义,或者 FP 程序员使用它们很不好。一旦你从轻量函数式中毕业,你就可能/希望去更正规的学习 FP,而且你无疑会有很多机会搞清楚它们意味着什么和为什么。
但我想让你 现在 就能够将 FP 基础中的一些应用到你的 JavaScript 中去,因为我相信它能帮你写出更好,更 合理 的代码。
要了解更多本书背后的动机与视角,请参阅前言。
- 序 (TBA)
- 前言
- 第一章:为什么要进行函数式编程?
- 第二章:函数式函数的基础
- 第三章:管理函数输入
- 第四章:组合函数
- 第五章:降低副作用
- 第六章:值不可变性
- 第七章:闭包 vs 对象
- 第八章:列表操作
- 第九章:递归
- 第十章:函数式异步
- 第十一章:综合应用
- 附录A:转导
- 附录B:谦逊的单子(Monad)
- 附录C:FP 库
这本书由我自出版,最有可能是在 Leanpub 上出版数字版本。我也在为贩卖此书的印刷版想办法,但这部分还不确定。
除了购买这本书以外,如果你想要对本作品(或者我的其他在线开源内容)做出经济上的贡献,我有一个 patreon。我将永远感激你的慷慨。
这些书的内容很大程度上衍生自我职业中(公开的和私营企业培训的形式)教授的一个同名辅导班。
如果你喜欢这些内容并且想要联系我进行关于这些内容,或其他关于 JS/HTML5/node.js 话题的培训,请通过这里罗列的渠道联系我:
我还有一些以请求方式发布的视频 JS 培训课程。我通过 Frontend Masters 教授课程,比如我的 Functional-Lite JS 教室。这些课程中的一些还可以通过 PluralSight 找到。
非常感谢 你向本作品做出的任何贡献。
但是在提交 PR 以前 请 仔细阅读内容贡献指引。
The materials herein are all (c) 2016-2017 Kyle Simpson.
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License.

