本书脱离特定的语言特性,关注各种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
《CSS+DIV网页样式与布局案例指导》是网页设计的一大改革。DIV分块实现了HTML文档内部结构的划分,CSS层叠样式表则为网页提供了丰
《生死课》内容简介:《生死课》是袁凌的短篇记录合集,记录了各色生存地面上辗转的小人物,或是历史地层中叠压的无名氏。这些人物
本书主要通过了解,学习,使用Arduino开源模块,让读者在实战过程中学习并掌握基于AVR8位单片机的项目开发技巧。在2011年举行的G
《深入理解Java7:核心技术与最佳实践》的主要内容可分为三大部分:第一部分是1-6章,全面阐释Java7在语法、JVM、类库和API等方面
《2009-2010智能科学与技术学科发展报告》包含1篇综合报告和11篇专题报告。其中,综合报告的主要内容包括:(1)我国智能科学与技
《阿尔泰山游牧者》内容简介:本书是作者在阿尔泰山区富蕴县境内,长达4年多田野调查基础上完成的民族志报告。全书立足于阿尔泰山哈
《钟情一生》内容简介:本书以中国科学院成都生物研究所几代人数十年来致力于中国两栖爬行动物研究这一事迹为蓝本,围绕以费梁、叶
《Origin8.0实用教程:科技作图与数据分析》主要按Origin基础、数据管理、科技作图、数据分析和自动化编程为系统框架,以模块功能
《我自我的田渠归来》内容简介:“中国当代十大散文家”张晓风精选散文集,部分内容首次大陆出版。本书内容由作者亲自编排,依据宋
本书是权威的Python语言参考指南,内容涉及核心Python语言和Python库的最重要部分。本书内容简洁扼要、可读性强,书中还包括了一
TherehasbeenadramaticgrowthinthedevelopmentandapplicationofBayesianinferentialme...
《你无法改变世界时改变自己》内容简介:本书以“改变”为出发,分别从人生、生活、人际、处世、工作、得失等各个方面阐述了改变对
两难境地的明智抉择 内容简介 首先要说的是我深刻感到了中国软件行业的问题严重性,也特别同情中国共享软件作者的境遇。也学很多人会认为做软件的尤其是知名软件的厂商或...
《小大师 和梵高玩儿色彩》内容简介:这是一本帮助您指导孩子无拘无束地理解“什么是美”的书。本书主要针对5~10岁喜爱绘画或对绘
这是一本关于操作系统基本原理的教科书,其最大特点就是从操作系统的分层概念出发,深入浅出地介绍了操作系统的基本概念和基本框
《块数据5.0:数据社会学的理论与方法》内容简介:块数据是贵阳发展大数据的理论创新和实践探索的产物,是大数据时代的解决方案。《
《电子商务基础》内容简介:本书以一个完整的电子商务网上交易项目贯穿课程教学始终,以项目的实现过程为线索展开教学内容,整个教
《游戏核心算法编程内幕》由三部分组成。其中第一部分主要介绍游戏编程的基本概念;第二部分详细介绍游戏编程中的各种技术和算法
《上学谣》内容简介:壮乡少年火龙从小无母,父亲在矿难中去世,奶奶水仙阿嬷以壮族传说比喻其身世,族亲坚守秘密,政府出资相助,
《清华法治论衡(第27辑)》内容简介:马克斯·韦伯是19世纪到20世纪最杰出的社会学家与法学家,其研究涉及法学、社会学、政治学、