今日好书丨《前端函数式攻城指南》
Posted 博文视点Broadview
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了今日好书丨《前端函数式攻城指南》相关的知识,希望对你有一定的参考价值。
《前端函数式攻城指南》
用javascript编写出优雅的函数式代码
以不一样的方式思考和解决问题
欧阳继超 著
2016年10月出版
小编推荐: 在前端,函数式最后的边界也已经被渐渐打破,能支持函数式编程的JavaScript库越来越多。本书涵盖大部分函数式编程思想,幽默风趣,通俗易懂。用JavaScript实现了很多奇技淫巧,是Clojure风格的JavaScript。
下方评论区留下对此书的想法,选取一名幸运同学将赠此书,10月19日公布获奖用户。
在后端,函数式语言层出不穷。在前端,函数式最后的边界也已经被渐渐打破。Scala的Scala.js、Clojure的ClojureScript都试图同构移向前端。然而,原生JavaScript其实也可以通过丰富的库让前端的函数式编程一样的舒适和优雅。《前端函数式攻城指南》涵盖了大部分函数式编程思想,包括JavaScript的函数式支持,Clojure风格的集合、递归、函数组合、宏、模式匹配、实用的Monads,以及前端的并发编程。
函数式编程可以说是非常古老的编程方式,但是近年来函数式编程越来越受到人们的关注。不管是Google力推的Go、学术派的Scala与Haskell,还是Lisp的新方言Clojure,这些新的函数式编程语言都越来越受到人们的关注。
当然不仅是后端函数式编程语言层出不穷,前端也不甘示弱。虽然前端浏览器只支持一门语言——JavaScript,但是能支持函数式编程的JavaScript库越来越多,比如Functional JavaScript 、Underscore、lodash等。不仅如此,还有一些能编译成JavaScript的语言,能让前端的函数式编程发挥到极致,例如Haskell的PureScript、Scala的Scalajs、Clojure的ClojureScript。
我两次都以Clojure结尾,是因为我喜欢把重点留到最后。Clojure独特于其他语言,它既是一门新的语言、一门函数式编程范式的语言,又流淌着古老的血液——Lisp 。这是我选择用Clojure来诠释函数式编程的原因之一。
那么为什么我要选JavaScript作为函数式编程的目标呢?Michael Fogus用200多页向大家展示了不一样的Functional JavaScript编程方式,可惜Fogus作为ClojureScript编译器的贡献者,竟然选择了Underscore作为函数式库,直接导致并不能完全展示JavaScript所能达到的函数式编程能力。有趣的是,ClojureScript的作者把ClojureScript的不可变(Immutable)数据结构移植到了JavaScript,这彻底将 JavaScript 的函数式编程提升到了用其他库都完成不了的新高度 。不仅如此,Mozilla的Sweet.js更是完成了另一个突破——JavaScript的macro,它虽然不能算是函数式的概念,但也算是Lisp语言的一项独门绝技了 。
这一切的一切,都让我忍不住要帮Fogus出一本续集,用JavaScript实现其他函数式编程语言如Clojure甚至是Haskell 的奇技淫巧,让大家进一步感受用JavaScript这门不完美的语言同样可以编写出优雅的函数式代码,以不一样的方式思考和解决问题。于是不管你是想转行JavaScript的Clojure开发者,还是想了解Clojure或函数式编程的JavaScript开发者,都可以在此找到一些启发。但这并不是一本JavaScript入门的好书 。
第1章 函数式JavaScript 1
1.1 JavaScript也是函数式语言吗 1
1.2 作为函数式语言,JavaScript还差些什么 10
1.3 Underscore你错了 14
1.4 小结 18
第2章 集合 19
2.1 集合的使用 20
2.2 持久性数据结构 27
2.3 不可变性 35
2.4 惰性序列 44
2.5 小结 50
第3章 递归 51
3.1 不可变性与递归 51
3.2 柯里悖论 55
3.3 尾递归优化 62
3.4 蹦跳乐园(Trampoline) 64
3.5 小结 69
第4章 函数组合 70
4.1 Underscore到底做错了什么 70
4.2 柯里化有什么用 75
4.3 Transducer 78
4.4 组合与管道 84
4.5 小结 87
第5章 Macro宏 89
5.1 什么是REPL 89
5.2 为什么要语法糖 93
5.3 Sweet.js 94
5.4 Infix Macro 和 Operator 104
5.5 小结 106
第6章 模式匹配 107
6.1 Destructure 107
6.2 Arity 函数 110
6.3 Fizz Buzz 111
6.4 代数数据类型(ADT) 116
6.5 小结 118
第7章 Monadic编程 119
7.1 链式调用 119
7.2 Monad 123
7.3 走钢丝 139
7.4 Monad在JavaScript中的应用 143
7.5 Reactive编程 146
7.6 小结 153
第8章 并发编程 154
8.1 什么是并发 154
8.2 通信顺序进程(CSP) 160
8.3 使用Generator实现CSP 162
8.4 实战 CSP 168
8.5 小结 173
参考资料 174
博文视点
您阅读的专业智库
了解更多本书详情请点击阅读原文
长按二维码轻松关注
点击阅读原文,即可快速抵达本书详情页!
以上是关于今日好书丨《前端函数式攻城指南》的主要内容,如果未能解决你的问题,请参考以下文章