Ⅰ函数式Swift基础 1
第1章 函数式思想 2
1.1 案例:Battleship 2
1.2 一等函数 7
1.3 类型驱动开发 11
1.4 注解 11
第2章 案例研究:封装Core lmage 12
2.1 滤镜类型 12
2.2 构建滤镜 13
模糊 13
颜色叠层 13
2.3 组合滤镜 15
复合函数 16
2.4 理论背景:柯里化 17
2.5 讨论 18
第3章 Map、 Filter和Reduce 20
3.1 泛型介绍 20
顶层函数和扩展 24
3.2 Filter 24
3.3 Reduce 26
3.4 实际运用 29
3.5 泛型和Any类型 31
3.6 注释 32
第4章 可选值 34
4.1 案例研究:字典 34
4.2 玩转可选值 37
可选值链 37
分支上的可选值 39
可选映射 40
再谈可选绑定 41
4.3 为什么使用可选值 43
第5章 案例研究:QuickCheck 47
5.1 构建QuickCheck 49
生成随机数 49
实现check函数 51
5.2 缩小范围 53
反复缩小范围 54
5.3 随机数组 55
5.4 使用QuickCheck 58
5.5 展望 59
第6章 不可变性的价值 60
6.1 变量和引用 60
6.2 值类型与引用类型 61
结构体与类:究竟是否可变 63
Objective-C 64
6.3 讨论 65
第7章 枚举 68
7.1 关于枚举 68
7.2 关联值 71
7.3 添加泛型 72
7.4 Swift中的错误处理 74
7.5 再聊聊可选值 75
7.6 数据类型中的代数学 76
7.7 为什么使用枚举 78
第8章 纯函数式数据结构 79
8.1 二叉搜索树 79
8.2 基于字典树的自动补全 85
字符串字典树 91
8.3 讨论 93
第9章 案例研究:图表 94
9.1 绘制 正方形和 圆形 94
9.2 核心数据结构 97
9.3 计算与绘制 99
9.4 创建视图与 PDF 105
9.5 额外的组合算子 106
9.6 讨论 107
Ⅱ 函数式Swift进阶 109
第10章 生成器和序列 110
10.1 生成器 110
10.2 序 列 115
10.3 案例研究:遍历二叉树 118
10.4 案例研究:优化QuickCheck的范围收缩 119
10.5 不止是Map与Filter 123
第11章 案例研究:解析器组合算子 127
11.1 核心部分 127
11.2 选择 131
11.3 顺序解析 131
改进 133
11.4 便利组合算子 138
11.5.一个简单的计算器 143
第12章 案例研究:构建一个表格应用 148
12.1 示例代码 148
12.2 解析器 149
符号化 149
解析 153
12.3 求值器 158
12.4 GUI 163
数据源 163
代理 165
窗口控制器 165
第13章 函子、适用函子与单子 167
13.1 函子 167
13.2 适用函子 169
13.3 单子 172
13.4 讨论 174
第14章 尾声 176
14.1 拓展阅读 177
14.2 结语 178
参考文献 179