本书脱离特定的语言特性,关注各种OOP语言的共同实践做法,展示如何通过函数式语言解决问题。例如,如何利用函数式语言,通过高阶函数、多元方法等完成代码重用。知名软件架构师Neal Ford为我们展示不同的编程范式,帮我们完成从Java命令式编程人员,到使用Java、Clojure、Scala函数式编程人员的完美转变,建立对函数式语言的语法和语义的良好理解。
译者序ix
前言xi
第1章 为什么1
1.1 范式转变2
1.2 跟上语言发展的潮流4
1.3 把控制权让渡给语言/ 运行时4
1.4 简洁5
第2章 转变思维9
2.1 普通的例子9
2.1.1 命令式解法9
2.1.2 函数式解法10
2.2 案例研究:完美数的分类问题15
2.2.1 完美数分类的命令式解法15
2.2.2 稍微向函数式靠拢的完美数分类解法16
2.2.3 完美数分类的Java 8实现18
2.2.4 完美数分类的Functional Java实现19
2.3 具有普遍意义的基本构造单元21
2.3.1 筛选22
2.3.2 映射23
2.3.3 折叠/ 化约25
2.4 函数的同义异名问题28
2.4.1 筛选28
2.4.2 映射31
2.4.3 折叠/ 化约33
第3章 权责让渡37
3.1 迭代让位于高阶函数37
3.2 闭包38
3.3 柯里化和函数的部分施用41
3.3.1 定义与辨析41
3.3.2 Groovy的情况42
3.3.3 Clojure的情况44
3.3.4 Scala的情况44
3.3.5 一般用途47
3.4 递归48
3.5 Stream 和作业顺序重排53
第4章 用巧不用蛮55
4.1 记忆55
4.1.1 缓存56
4.1.2 引入“记忆”59
4.2 缓求值65
4.2.1 Java语言下的缓求值迭代子65
4.2.2 使用Totally Lazy框架的完美数分类实现67
4.2.3 Groovy语言的缓求值列表69
4.2.4 构造缓求值列表72
4.2.5 缓求值的好处74
4.2.6 缓求值的字段初始化76
第5章 演化的语言79
5.1 少量的数据结构搭配大量的操作79
5.2 让语言去迎合问题81
5.3 对分发机制的再思考82
5.3.1 Groovy对分发机制的改进82
5.3.2 “身段柔软”的Clojure 语言83
5.3.3 Clojure的多重方法和基于任意特征的多态85
5.4 运算符重载87
5.4.1 Groovy87
5.4.2 Scala89
5.5 函数式的数据结构91
5.5.1 函数式的错误处理91
5.5.2 Either类92
5.5.3 Option类100
5.5.4 Either树和模式匹配100
第6章 模式与重用107
6.1 函数式语言中的设计模式107
6.2 函数级别的重用108
6.2.1 Template Method模式109
6.2.2 Strategy模式 111
6.2.3 Flyweight模式和记忆113
6.2.4 Factory模式和柯里化116
6.3 结构化重用和函数式重用的对比117
第7章 现实应用125
7.1 Java 8125
7.1.1 函数式接口126
7.1.2 Optional类型128
7.1.3 Java 8的stream128
7.2 函数式的基础设施129
7.2.1 架构129
7.2.2 Web 框架132
7.2.3 数据库133
第8章 多语言与多范式135
8.1 函数式与元编程的结合136
8.2 利用元编程在数据类型之间建立映射137
8.3 多范式语言的后顾之忧140
8.4 上下文型抽象与复合型抽象的对比141
8.5 函数式金字塔143
作者简介147
封面介绍147
《师夷长技》内容简介:本书为两卷本《中国近现代科技转型的历史轨迹与哲学反思》之第二卷。自晚清直至民国,内忧外患,形势艰危,
轻松学习C程序设计-揭开计算机与程序设计的奥秘 本书特色 尽自己*大能力写一本比较轻,松颖,清晰,透彻,有价值的计算机科学入门是我的夙愿;把真正掌握计算奥秘和学...
《一本书读懂内部审计》内容简介:内部审计工作涉及公司经营的每一个环节,小到一份经济合同、一张财务报表,大到业务流程、部门绩
《雨夜短文》内容简介:《雨夜短文》余秋雨散文新作,篇幅短小,意境至美。上辑“万里入心”不仅是苦旅足迹遍布四海的余秋雨在空间
《移动App测试的22条军规》内容简介:本书全面讲解了移动App测试的技术、技巧、工具、案例和测试用例,全书共分23章,主要内容为:
《Rhino7犀利建模》内容简介:本书是由长沙卓尔谟教育科技有限公司编写的一部以Rhino7(犀牛软件)建模方法教学为核心的综合性教程
《解密·强直性脊柱炎》内容简介:本书从疾病的认识、诊断、治疗以及预防与康复等四个方面,对强直性脊柱炎这一困惑医患双方的医学
UI设计入门一本就够 本书特色 本书紧扣用户界面设计趋势,主要讲解了什么是UI设计,UI设计的原则与理念,UI的文字、图片和图标设计,网页UI设计,移动端UI设...
《先行者:未来新经济的探索》内容简介:本书探讨了新经济在成都的前世今生。通过跟70+创业者、企业高管、投资人、科研工作者对话,
SPSS数据分析-问题提出与实例导学 本书特色 《SPSS数据分析:问题提出与实例导学》由中国水利水电出版社出版。SPSS数据分析-问题提出与实例导学 目录 前...
WebGIS原理及其应用——主要WebGIS平台开发实例 本书特色 《Web GIS原理及其应用:主要Web GIS平台开发实例》:地理信息系统教学丛书WebG...
电脑软件实用技巧380招 本书特色 从零开始,由浅入深,图文并茂,通俗易懂;内容丰富,全面、范例实用,边讲边练,讲练结合;目标清楚,难点、重点突出,步骤清楚,即...
《C语言程序设计》内容简介:C语言是国内外广泛使用的计算机语言,是理工类专业人员应掌握的一种程序设计工具。本书以能力培养为目
《PythonUNIX和Linux系统管理指南》介绍了Python语言如何为管理uNIx和Linux服务器提供各种更加有效的任务处理方式。书中各章都提
WrittenbynotedquantumcomputingtheoristScottAaronson,thisbooktakesreadersonatourt...
JamesF.Kurose是美国马萨诸塞大学阿默斯特分校的计算机科学系教授。他曾多次荣获杰出教师奖,并获得IEEETaylorBooth教育奖章,还
《Turbo与LDPC编解码及其应用》结合国际工业技术标准和国内工业技术标准中的Turbo码和LDPC码,系统、深入地给出了Turbo码和LDPC码
影像圣堂photoshopcs3中文版步步为营启蒙+基础练习附光盘 本书特色 《Photoshop CS3步步为营:启蒙+基础练习》(中文版)光盘包含书中所有实...
本书是计算机科学方面的经典名著《编程珠玑》的姊妹篇,讲述了对于程序员有共性的知识。书中涵盖了程序员操纵程序的技术、程序员
信号检测与估计理论是随机信号统计处理的基础。本书在扼要复习信号检测与估计理论基础知识后,首先论述信号的统计检测理论和信号