√函数式编程已呈席卷之势,赶紧开始学习一门函数式编程语言吧!
√Swift有作为一门函数式语言的先天优势,iOS开发也可以函数式!
√objc是全球知名iOS教学网站,其精品图书更是惠及无数开发者!
√Swifter一书作者喵神王巍组织翻译objc系列精品图书将相继问世!
Swift是一门有着合适的语言特性来适配函数式编程方法的优秀语言,对于国内的不少开发者来说,Swift可能是我们**次真正有机会去接触和使用的一门函数式特性语言。Swift在语法上更加优雅灵活,语言本身也遵循了函数式的设计模式。本书是一本引领你进入Swift函数式编程世界的优秀读物,它让更多的中国开发者有机会接触并了解Swift语言函数式的一面,是广大程序开发者不可多得的工具书。
1 函数式Swift基础 1
第1章 函数式思想 2
1.1 案例:Battleship 2
1.2 一等函数 7
1.3 类型驱动开发 11
1.4 注解 11
第2章 案例研究:封装Core Image 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 Swi?中的错误处理 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
II 函数式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