本书脱离特定的语言特性,关注各种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
《指尖上的会计》内容简介:学会计并不难,难的是“学得开心,用得顺手”。那么,面对那些晦涩难懂的会计术语以及财税处理工作,如
《请孔子当CEO》内容简介:孔子儒家思想的核心是一个“仁”字。在这样一个疯狂追求增长的时代,学习儒家思想使我们得以反思商业的本
C与.NET3.0高级程序设计(特别版) 本书特色 Amazon超级畅销书,C#圣经级著作,全面涵盖C#3.0和.NET 3.0平台,包括LINQ、WPF、WC...
《办一场属于自己的婚礼:婚礼筹备完整指南》内容简介:这是一本婚礼收藏级宝书。作者深耕婚礼行业8年,在本书中,将自己个人备婚经
《“笨办法”学Python 3》内容简介:本书是一本Python入门书,适合对计算机了解不多,没有学过编程,但对编程感兴趣的读者学习使用
《软件调试实战》主要讲述C/C++程序的调试和分析,书中的调试技术也可以应用于其他语言编写的程序。《软件调试实战》在讲述简单的
《新闻历史与理论》内容简介:“新世纪中国人民大学新闻传播学文丛”按主题分为5卷,精选自2000年以来中国人民大学新闻学院在马克思
《Java RESTful Web Service实战(第2版)》内容简介:迫不及待,这是我想为读者更新REST服务新发展的心情,遂有此第2版。首先,我
《喷头下的世界:漫谈3D打印(双色)》从多种科学技术之间彼此影响、相互促进、分流交汇、掺杂渗透的角度,向读者介绍近年来异常
Long-awaitedrevisiontoauniqueguidethatcoversbothcompilersandinterpretersRevised,...
《童年不缺爱》内容简介:安全感决定孩子一生的幸福 有了安全感,孩子才能放心地探索世界 随着现代社会对育儿知识、心理健康的关注
《JavaScript+Vue.js web开发案例教程(在线实训版)》内容简介:随着互联网技术的不断发展,JavaScript语言及其相关技术越来越受人
《众里寻他千百度:淑章谈古诗词》内容简介:本书以经典古诗词为抓手,融合文学、历史、美学、文献学、艺术等多门学科知识。本书包
設計需要衝擊才能併發出更多精彩的概念與創作,如果你老在同一種設計手法中打轉,不知該如何突破,請看一線設計師如何在相同的主
《作文课:让创意改变作文》内容简介:读书是为了更好的生活做准备,作文是表达自己的最好方式。本书作者谭旭东老师曾在中小学校举
《马克思哲学要义》内容简介:赵敦华著的《马克思哲学要义》以文本研究为基础,结合国内外研究成果,对马克思的启蒙哲学、批判哲学
《宋词三百首品读》内容简介:《宋词三百首》是晚清词人朱祖谋所编的一本脍炙人口的经典宋词选本,广为读者接受和喜爱。本书即华东
本书系“世纪人文系列丛书”之“袖珍经典”中的一种。所谓分类,是指人们把事物,事件以及有关世界的事实划分成类和种,使之各有
这场始于政府工作报告,由互联网和传统行业跨界融合形成的巨大浪潮,正在以中国经济转型为新驱动力的角色,席卷生机勃勃的整个国
《宋代衣食住行》内容简介:本书为四色印制的有关宋代衣食住行的彩图珍藏类图书。两宋时期是中国古代历史上的一个特殊时期,商品经