第I部分 函数式工具包
第1章 学习函数式编程
1.1 也许你选择本书是因为……
1.2 你应掌握的背景知识
1.3 函数是什么样的
1.4 认识函数
1.5 当代码说谎时……
1.6 命令式与声明式
1.7 小憩片刻:命令式与声明式
1.8 解释:命令式与声明式
1.9 学习函数式编程的益处
1.10 进入Scala
1.11 练习用Scala编写函数
1.12 准备工具
1.13 了解REPL
1.14 编写你的第一个函数
1.15 如何使用本书
小结
第2章 纯函数
2.1 为什么需要纯函数
2.2 命令式编码
2.3 破译代码
2.4 传递数据的副本
2.5 再次破译代码……
2.6 重新计算而不是存储
2.7 通过传递状态来集中于逻辑
2.8 状态去哪儿了
2.9 纯函数和非纯函数之间的区别
2.10 小憩片刻:将命令式代码重构为纯函数
2.11 解释:将命令式代码重构为纯函数
2.12 纯函数是值得信任的
2.13 程序语言中的纯函数
2.14 保持纯函数的难度……
2.15 纯函数和清洁代码
2.16 小憩片刻:纯函数还是非纯函数
2.17 解释:纯函数还是非纯函数
2.18 使用Scala编写纯函数
2.19 用Scala练习纯函数
2.20 测试纯函数
2.21 小憩片刻:测试纯函数
2.22 解释:测试纯函数
小结
第3章 不可变值
3.1 引擎的燃料
3.2 不可变性的另一种情况
3.3 你会相信这个函数吗
3.4 可变性是危险的
3.5 回顾:说谎的函数……
3.6 使用副本对抗可变性
3.7 小憩片刻:可变性带来的困扰
3.8 解释:可变性带来的困扰
3.9 引入共享可变状态
3.10 状态对编程能力的影响
3.11 处理移动部分
3.12 使用FP处理移动部分
3.13 Scala中的不可变值
3.14 建立对不可变性的直觉
3.15 小憩片刻:不可变的String API
3.16 解释:不可变的String API
3.17 等等,这不是更糟糕吗
3.18 纯函数解法解决共享可变状态问题
3.19 练习不可变的切分和追加
小结
第4章 函数作为值
4.1 将要求实现为函数
4.2 非纯函数和可变值反击
4.3 使用Java Streams对列表进行排序
4.4 函数特征标记应说明全部情况
4.5 更改要求
4.6 只是在传递代码
4.7 使用Java的Function值
4.8 使用Function语法处理代码重复问题
4.9 将用户定义的函数作为参数传递
4.10 小憩片刻:将函数作为参数
4.11 解释:将函数作为参数
4.12 阅读函数式Java的问题
4.13 在Scala中传递函数
4.14 深入了解sortBy
4.15 在Scala中具有函数参数的特征标记
4.16 在Scala中将函数作为参数传递
4.17 练习函数传递
4.18 采用声明式编程
4.19 将函数传递给自定义函数
4.20 小函数及其职责
4.21 内联传递函数
4.22 小憩片刻:在Scala中传递函数
4.23 解释:在Scala中传递函数
4.24 仅通过传递函数还能实现什么功能呢
4.25 将函数应用于列表中的每个元素
4.26 使用map将函数应用于列表的每个元素
4.27 了解map
4.28 练习使用map
4.29 学习一次,随处适用
4.30 根据条件返回列表的部分内容
4.31 使用filter返回列表的部分内容
4.32 了解filter
4.33 练习filter
4.34 迄今为止的旅程……
4.35 避免重复自己
4.36 API是否易于使用
4.37 添加一个新参数不足以解决问题
4.38 函数可以返回函数
4.39 使用可以返回函数的函数
4.40 函数就是值
4.41 小憩片刻:返回函数
4.42 解释:返回函数
4.43 设计函数式API
4.44 函数式API的迭代设计
4.45 从返回的函数中返回函数
4.46 如何从返回的函数中返回函数
4.47 使用返回函数构建的灵活API
4.48 在函数中使用多个参数列表
4.49 使用柯里化
4.50 练习柯里化
4.51 通过传递函数值进行编程
4.52 将许多值缩减为单个值
4.53 使用foldLeft将多个值缩减为一个
4.54 了解foldLeft
4.55 foldLeft用者须知
4.56 练习foldLeft
4.57 建模不可变数据
4.58 使用具有高阶函数的求积类型
4.59 内联函数的更简洁语法
小结
第II部分 函数式程序
第5章 顺序程序
5.1 编写基于流水线的算法
5.2 根据小模块构建大型程序
5.3 命令式解法
5.4 flatten和flatMap
5.5 使用多个flatMap的实际案例
5.6 flatMap和列表大小的更改
5.7 小憩片刻:处理由列表组成的列表
5.8 解释:处理由列表组成的列表
5.9 连接的flatMap和map
5.10
展开