今日好书丨《前端函数式攻城指南》

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

今日好书丨《前端函数式攻城指南》


今日好书丨《前端函数式攻城指南》 

博文视点

您阅读的专业智库

了解更多本书详情请点击阅读原文

长按二维码轻松关注


点击阅读原文,即可快速抵达本书详情页!

以上是关于今日好书丨《前端函数式攻城指南》的主要内容,如果未能解决你的问题,请参考以下文章

前端函数式攻城指南 pdf

图书前端函数式攻城指南

今日好书丨《The Little Schemer:递归与函数式的奥妙》

今日好书丨《移动Web前端高效开发实战》

好书丨为什么函数式编程最近才崛起

今日好书丨Python高效开发实战——DjangoTornadoFlaskTwisted