App 下载
注册
登录
|
搜索
正在搜索中...
首页
我的书架
我的主页
我的收藏
我的书评
JavaScript 是近年来非常受瞩目的一门编程语言,它既支持面向对象编程,也支持函数式编程。本书专门介绍JavaScript函数式编程的特性。 全书共9章,分别介绍了
……
[ 展开全部 ]
JavaScript函数式编程、一等函数与Applicative编程、变量的作用域和闭包、高阶函数、由函数构建函数、递归、纯度和不变性以及更改政策、基于流的编程、类编程。除此之外,附录中还介绍了更多函数式JavaScript。 本书内容全面,示例丰富,适合想要了解函数式编程的JavaScript程序员和学习JavaScript的函数式程序员阅读。
[ 收起 ]
作者:[美] Michael Fogus
出版社:人民邮电出版社
定价:49
ISBN:7115390606
给个评价
做个书摘
书摘 (21 )
评价 (1 )
查看所有书摘
按目录显示书摘
只显示目录
第1章 JavaScript函数式编程简介1
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.1 JavaScript案例1
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.2 开始函数式编程4
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.2.1 为什么函数式编程很重要4
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.2.2 以函数为抽象单元7
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.2.3 封装和隐藏9
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.2.4 以函数为行为单位10
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.2.5 数据抽象14
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.2.6 函数式JavaScript初试17
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.2.7 加速19
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.3 Underscore示例22
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
1.4 总结23
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第2章 一等函数与Applicative编程24
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
2.1 函数是一等公民24
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
2.2 Applicative编程30
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
2.2.1 集合中心编程31
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
2.2.2 Applicative编程的其他实例32
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
2.2.3 定义几个Applicative函数35
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
2.3 数据思考36
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
2.4 总结43
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第3章 变量的作用域和闭包44
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
3.1 全局作用域44
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
3.2 词法作用域46
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
3.3 动态作用域47
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
3.4 函数作用域51
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
3.5 闭包52
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
3.5.1 模拟闭包53
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
3.5.2 使用闭包57
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
3.5.3 闭包的抽象59
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
3.6 总结60
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第4章 高阶函数62
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
4.1 以其他函数为参数的函数62
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
4.1.1 关于传递函数的思考:max、finder和best63
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
4.1.2 关于传递函数的更多思考:重复、反复和条件迭代
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
(iterateUntil)65
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
4.2 返回其他函数的函数67
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
4.2.1 高阶函数捕获参数69
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
4.2.2 捕获变量的好处69
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
4.2.3 防止不存在的函数:fnull72
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
4.3 整合:对象校验器74
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
4.4 总结77
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第5章 由函数构建函数78
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.1 函数式组合的精华78
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.2 柯里化(Currying)83
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.2.1 向右柯里化,还是向左84
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.2.2 自动柯里化参数85
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.2.3 柯里化流利的API88
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.2.4 JavaScript柯里化的缺点89
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.3 部分应用89
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.3.1 部分应用一个和两个已知的参数91
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.3.2 部分应用任意数量的参数92
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.3.3 局部应用实战:前置条件93
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.4 通过组合端至端的拼接函数96
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
5.5 总结98
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第6章 递归100
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.1 自吸收(self—absorbed)函数(调用自己的函数)100
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.1.1 用递归遍历图105
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.1.2 深度优先自递归搜索106
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.1.3 递归和组合函数:Conjoin和Disjoin108
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.2 相互关联函数(函数调用其他会再调用回它的函数)110
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.2.1 使用递归深克隆111
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.2.2 遍历嵌套数组112
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.3 太多递归了114
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.3.1 生成器117
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.3.2 蹦床原理以及回调120
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.4 递归是一个底层操作121
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
6.5 总结122
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第7章 纯度、不变性和更改政策123
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.1 纯度123
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.1.1 纯度和测试之间的关系124
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.1.2 提取纯函数125
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.1.3 测试不纯函数的属性126
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.1.4 纯度与引用透明度的关系127
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.1.5 纯度和幂等性129
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.2 不变性130
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.2.1 如果一棵树倒在树林里,有没有声音?132
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.2.2 不变性与递归133
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.2.3 冻结和克隆134
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.2.4 在函数级别上观察不变性136
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.2.5 观察对象的不变性137
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.2.6 对象往往是一个低级别的操作140
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.3 控制变化的政策141
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
7.4 总结144
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第8章 基于流的编程145
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.1 链接145
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.1.1 惰性链148
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.1.2 Promises152
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.2 管道154
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.3 数据流与控制流158
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.3.1 找个一般的形状161
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.3.2 函数可以简化创建action164
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
8.4 总结166
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
第9章 无类编程167
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.1 数据导向167
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2 Mixins173
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2.1 修改核心原型175
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2.2 类层次结构176
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2.3 改变层级结构179
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2.4 用Mixin扁平化层级结构180
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2.5 通过Mixin扩展新的语义185
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2.6 通过Mixin混合出新的类型187
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.2.7 方法是低级别操作188
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
9.3.call(“Finis”);190
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
附录A 更多函数式JavaScript191
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.1 JavaScript的函数式库191
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.1.1 函数式JavaScript191
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.1.2 Underscore—contrib192
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.1.3 RxJS192
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.1.4 Bilby194
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.1.5 allong.es195
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.1.6 其他函数式库196
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.2 能编译成JavaScript的函数式语言196
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.2.1 ClojureScript196
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.2.2 CoffeeScript197
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.2.3 Roy198
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
A.2.4 Elm198
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
附录B推荐书目
还没有人在此章节添加过书摘,赶紧来抢第一吧!
在此章节添加书摘
导购链接
×
做书摘
文字书摘
读图识字
至少还需要输入
10
字
保存原图片为书摘
上传图片
识别
最多输入
500
个字
上传图片
重新上传
写点笔记吧
至少还需要输入
10
字
章节(选填)
第1章 JavaScript函数式编程简介1
1.1 JavaScript案例1
1.2 开始函数式编程4
1.2.1 为什么函数式编程很重要4
1.2.2 以函数为抽象单元7
1.2.3 封装和隐藏9
1.2.4 以函数为行为单位10
1.2.5 数据抽象14
1.2.6 函数式JavaScript初试17
1.2.7 加速19
1.3 Underscore示例22
1.4 总结23
第2章 一等函数与Applicative编程24
2.1 函数是一等公民24
2.2 Applicative编程30
2.2.1 集合中心编程31
2.2.2 Applicative编程的其他实例32
2.2.3 定义几个Applicative函数35
2.3 数据思考36
2.4 总结43
第3章 变量的作用域和闭包44
3.1 全局作用域44
3.2 词法作用域46
3.3 动态作用域47
3.4 函数作用域51
3.5 闭包52
3.5.1 模拟闭包53
3.5.2 使用闭包57
3.5.3 闭包的抽象59
3.6 总结60
第4章 高阶函数62
4.1 以其他函数为参数的函数62
4.1.1 关于传递函数的思考:max、finder和best63
4.1.2 关于传递函数的更多思考:重复、反复和条件迭代
(iterateUntil)65
4.2 返回其他函数的函数67
4.2.1 高阶函数捕获参数69
4.2.2 捕获变量的好处69
4.2.3 防止不存在的函数:fnull72
4.3 整合:对象校验器74
4.4 总结77
第5章 由函数构建函数78
5.1 函数式组合的精华78
5.2 柯里化(Currying)83
5.2.1 向右柯里化,还是向左84
5.2.2 自动柯里化参数85
5.2.3 柯里化流利的API88
5.2.4 JavaScript柯里化的缺点89
5.3 部分应用89
5.3.1 部分应用一个和两个已知的参数91
5.3.2 部分应用任意数量的参数92
5.3.3 局部应用实战:前置条件93
5.4 通过组合端至端的拼接函数96
5.5 总结98
第6章 递归100
6.1 自吸收(self—absorbed)函数(调用自己的函数)100
6.1.1 用递归遍历图105
6.1.2 深度优先自递归搜索106
6.1.3 递归和组合函数:Conjoin和Disjoin108
6.2 相互关联函数(函数调用其他会再调用回它的函数)110
6.2.1 使用递归深克隆111
6.2.2 遍历嵌套数组112
6.3 太多递归了114
6.3.1 生成器117
6.3.2 蹦床原理以及回调120
6.4 递归是一个底层操作121
6.5 总结122
第7章 纯度、不变性和更改政策123
7.1 纯度123
7.1.1 纯度和测试之间的关系124
7.1.2 提取纯函数125
7.1.3 测试不纯函数的属性126
7.1.4 纯度与引用透明度的关系127
7.1.5 纯度和幂等性129
7.2 不变性130
7.2.1 如果一棵树倒在树林里,有没有声音?132
7.2.2 不变性与递归133
7.2.3 冻结和克隆134
7.2.4 在函数级别上观察不变性136
7.2.5 观察对象的不变性137
7.2.6 对象往往是一个低级别的操作140
7.3 控制变化的政策141
7.4 总结144
第8章 基于流的编程145
8.1 链接145
8.1.1 惰性链148
8.1.2 Promises152
8.2 管道154
8.3 数据流与控制流158
8.3.1 找个一般的形状161
8.3.2 函数可以简化创建action164
8.4 总结166
第9章 无类编程167
9.1 数据导向167
9.2 Mixins173
9.2.1 修改核心原型175
9.2.2 类层次结构176
9.2.3 改变层级结构179
9.2.4 用Mixin扁平化层级结构180
9.2.5 通过Mixin扩展新的语义185
9.2.6 通过Mixin混合出新的类型187
9.2.7 方法是低级别操作188
9.3.call(“Finis”);190
附录A 更多函数式JavaScript191
A.1 JavaScript的函数式库191
A.1.1 函数式JavaScript191
A.1.2 Underscore—contrib192
A.1.3 RxJS192
A.1.4 Bilby194
A.1.5 allong.es195
A.1.6 其他函数式库196
A.2 能编译成JavaScript的函数式语言196
A.2.1 ClojureScript196
A.2.2 CoffeeScript197
A.2.3 Roy198
A.2.4 Elm198
附录B推荐书目
页码(选填)
这本书已经添加了这些章节,请勾选或者新建你的书摘所属的章节
add
up
down
remove
第1章 JavaScript函数式编程简介1
1.1 JavaScript案例1
1.2 开始函数式编程4
1.2.1 为什么函数式编程很重要4
1.2.2 以函数为抽象单元7
1.2.3 封装和隐藏9
1.2.4 以函数为行为单位10
1.2.5 数据抽象14
1.2.6 函数式JavaScript初试17
1.2.7 加速19
1.3 Underscore示例22
1.4 总结23
第2章 一等函数与Applicative编程24
2.1 函数是一等公民24
2.2 Applicative编程30
2.2.1 集合中心编程31
2.2.2 Applicative编程的其他实例32
2.2.3 定义几个Applicative函数35
2.3 数据思考36
2.4 总结43
第3章 变量的作用域和闭包44
3.1 全局作用域44
3.2 词法作用域46
3.3 动态作用域47
3.4 函数作用域51
3.5 闭包52
3.5.1 模拟闭包53
3.5.2 使用闭包57
3.5.3 闭包的抽象59
3.6 总结60
第4章 高阶函数62
4.1 以其他函数为参数的函数62
4.1.1 关于传递函数的思考:max、finder和best63
4.1.2 关于传递函数的更多思考:重复、反复和条件迭代
(iterateUntil)65
4.2 返回其他函数的函数67
4.2.1 高阶函数捕获参数69
4.2.2 捕获变量的好处69
4.2.3 防止不存在的函数:fnull72
4.3 整合:对象校验器74
4.4 总结77
第5章 由函数构建函数78
5.1 函数式组合的精华78
5.2 柯里化(Currying)83
5.2.1 向右柯里化,还是向左84
5.2.2 自动柯里化参数85
5.2.3 柯里化流利的API88
5.2.4 JavaScript柯里化的缺点89
5.3 部分应用89
5.3.1 部分应用一个和两个已知的参数91
5.3.2 部分应用任意数量的参数92
5.3.3 局部应用实战:前置条件93
5.4 通过组合端至端的拼接函数96
5.5 总结98
第6章 递归100
6.1 自吸收(self—absorbed)函数(调用自己的函数)100
6.1.1 用递归遍历图105
6.1.2 深度优先自递归搜索106
6.1.3 递归和组合函数:Conjoin和Disjoin108
6.2 相互关联函数(函数调用其他会再调用回它的函数)110
6.2.1 使用递归深克隆111
6.2.2 遍历嵌套数组112
6.3 太多递归了114
6.3.1 生成器117
6.3.2 蹦床原理以及回调120
6.4 递归是一个底层操作121
6.5 总结122
第7章 纯度、不变性和更改政策123
7.1 纯度123
7.1.1 纯度和测试之间的关系124
7.1.2 提取纯函数125
7.1.3 测试不纯函数的属性126
7.1.4 纯度与引用透明度的关系127
7.1.5 纯度和幂等性129
7.2 不变性130
7.2.1 如果一棵树倒在树林里,有没有声音?132
7.2.2 不变性与递归133
7.2.3 冻结和克隆134
7.2.4 在函数级别上观察不变性136
7.2.5 观察对象的不变性137
7.2.6 对象往往是一个低级别的操作140
7.3 控制变化的政策141
7.4 总结144
第8章 基于流的编程145
8.1 链接145
8.1.1 惰性链148
8.1.2 Promises152
8.2 管道154
8.3 数据流与控制流158
8.3.1 找个一般的形状161
8.3.2 函数可以简化创建action164
8.4 总结166
第9章 无类编程167
9.1 数据导向167
9.2 Mixins173
9.2.1 修改核心原型175
9.2.2 类层次结构176
9.2.3 改变层级结构179
9.2.4 用Mixin扁平化层级结构180
9.2.5 通过Mixin扩展新的语义185
9.2.6 通过Mixin混合出新的类型187
9.2.7 方法是低级别操作188
9.3.call(“Finis”);190
附录A 更多函数式JavaScript191
A.1 JavaScript的函数式库191
A.1.1 函数式JavaScript191
A.1.2 Underscore—contrib192
A.1.3 RxJS192
A.1.4 Bilby194
A.1.5 allong.es195
A.1.6 其他函数式库196
A.2 能编译成JavaScript的函数式语言196
A.2.1 ClojureScript196
A.2.2 CoffeeScript197
A.2.3 Roy198
A.2.4 Elm198
附录B推荐书目
×
添加一个书摘本
搜索创建书摘本
搜索
正在搜索...
不对,换一下
书名
作者
出版社
备注
ISBN
*
*
第1章 JavaScript函数式编程简介1
1.1 JavaScript案例1
1.2 开始函数式编程4
1.2.1 为什么函数式编程很重要4
1.2.2 以函数为抽象单元7
1.2.3 封装和隐藏9
1.2.4 以函数为行为单位10
1.2.5 数据抽象14
1.2.6 函数式JavaScript初试17
1.2.7 加速19
1.3 Underscore示例22
1.4 总结23
第2章 一等函数与Applicative编程24
2.1 函数是一等公民24
2.2 Applicative编程30
2.2.1 集合中心编程31
2.2.2 Applicative编程的其他实例32
2.2.3 定义几个Applicative函数35
2.3 数据思考36
2.4 总结43
第3章 变量的作用域和闭包44
3.1 全局作用域44
3.2 词法作用域46
3.3 动态作用域47
3.4 函数作用域51
3.5 闭包52
3.5.1 模拟闭包53
3.5.2 使用闭包57
3.5.3 闭包的抽象59
3.6 总结60
第4章 高阶函数62
4.1 以其他函数为参数的函数62
4.1.1 关于传递函数的思考:max、finder和best63
4.1.2 关于传递函数的更多思考:重复、反复和条件迭代
(iterateUntil)65
4.2 返回其他函数的函数67
4.2.1 高阶函数捕获参数69
4.2.2 捕获变量的好处69
4.2.3 防止不存在的函数:fnull72
4.3 整合:对象校验器74
4.4 总结77
第5章 由函数构建函数78
5.1 函数式组合的精华78
5.2 柯里化(Currying)83
5.2.1 向右柯里化,还是向左84
5.2.2 自动柯里化参数85
5.2.3 柯里化流利的API88
5.2.4 JavaScript柯里化的缺点89
5.3 部分应用89
5.3.1 部分应用一个和两个已知的参数91
5.3.2 部分应用任意数量的参数92
5.3.3 局部应用实战:前置条件93
5.4 通过组合端至端的拼接函数96
5.5 总结98
第6章 递归100
6.1 自吸收(self—absorbed)函数(调用自己的函数)100
6.1.1 用递归遍历图105
6.1.2 深度优先自递归搜索106
6.1.3 递归和组合函数:Conjoin和Disjoin108
6.2 相互关联函数(函数调用其他会再调用回它的函数)110
6.2.1 使用递归深克隆111
6.2.2 遍历嵌套数组112
6.3 太多递归了114
6.3.1 生成器117
6.3.2 蹦床原理以及回调120
6.4 递归是一个底层操作121
6.5 总结122
第7章 纯度、不变性和更改政策123
7.1 纯度123
7.1.1 纯度和测试之间的关系124
7.1.2 提取纯函数125
7.1.3 测试不纯函数的属性126
7.1.4 纯度与引用透明度的关系127
7.1.5 纯度和幂等性129
7.2 不变性130
7.2.1 如果一棵树倒在树林里,有没有声音?132
7.2.2 不变性与递归133
7.2.3 冻结和克隆134
7.2.4 在函数级别上观察不变性136
7.2.5 观察对象的不变性137
7.2.6 对象往往是一个低级别的操作140
7.3 控制变化的政策141
7.4 总结144
第8章 基于流的编程145
8.1 链接145
8.1.1 惰性链148
8.1.2 Promises152
8.2 管道154
8.3 数据流与控制流158
8.3.1 找个一般的形状161
8.3.2 函数可以简化创建action164
8.4 总结166
第9章 无类编程167
9.1 数据导向167
9.2 Mixins173
9.2.1 修改核心原型175
9.2.2 类层次结构176
9.2.3 改变层级结构179
9.2.4 用Mixin扁平化层级结构180
9.2.5 通过Mixin扩展新的语义185
9.2.6 通过Mixin混合出新的类型187
9.2.7 方法是低级别操作188
9.3.call(“Finis”);190
附录A 更多函数式JavaScript191
A.1 JavaScript的函数式库191
A.1.1 函数式JavaScript191
A.1.2 Underscore—contrib192
A.1.3 RxJS192
A.1.4 Bilby194
A.1.5 allong.es195
A.1.6 其他函数式库196
A.2 能编译成JavaScript的函数式语言196
A.2.1 ClojureScript196
A.2.2 CoffeeScript197
A.2.3 Roy198
A.2.4 Elm198
附录B推荐书目