本书脱离特定的语言特性,关注各种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
《5G+智慧交通》内容简介:本书系统地呈现了智慧交通产业的发展概况、技术应用与典型场景,全面阐述了5G、AI、边缘计算、大数据等新
&ArcGIS开发宝典从入门到精通 内容简介 本书是为适应当前我国ArcGIS应用开发需要而编写的一本而向不同层次的开发指导教程。本书全面系统地介绍了ArcGI...
《Processing开发实战》内容简介:Processing简单易学的界面和编程风格,使很多机器人爱好者或电子制作爱好者,可以借助它完成机器
《Revit 2018建筑设计从入门到精通(中文版)》内容简介:本书重点介绍了Autodesk Revit2018中文版的新功能及各种基本操作方法和技
《结构主义视域下中国货币政策的信贷渠道研究》内容简介:结构异质性是发展中国家经济的典型特征,这种异质性不仅是微观经济主体类
BrandsAtoZ:是一套讲述富于独立性和创造性的品牌故事的丛书.本书详细探寻了每一个被选择品牌的历史,反映了其公司文化,并展示了其
《地理信息技术与地理教学的整合》内容简介:本书总结了地理信息技术应用于地理教学的研究成果,从理论上探讨了地理信息技术的教学
http://neuralnetworksanddeeplearning.com/目录 NeuralNetworksandDeepLearningWhatthi...
《恨中录》内容简介:《恨中录》囊括朝鲜王朝女性文学三大经典《癸丑日记》《仁显王后传》《恨中录》。 《癸丑日记》的故事发生
《C#从入门到精通(第4版)》内容简介:《软件开发视频大讲堂:C#从入门到精通(第4版)》从初学者角度出发,通过通俗易懂的语言、
本书是一本为没有艺术背景的普通人所写的平面设计指导书,作者通过图文并茂的典型案例讲解了设计的主要原则和规则,主要内容有:
《企业级Kubernetes应用》内容简介:Kubernetes从2015年7月21日发布1.0版本,经过三年多的时间不断发展至今,其作为开源的容器应用
监控与数据采集(SCADA)系统及其应用(第2版) 本书特色 SCADA系统的应用领域极其广泛,而不同应用领域的特点和监控要求又导致SCADA系统解决方案的多样...
《风的誓言:大榴莲梦幻治愈系插画绘》内容简介:本书为自由插画师大榴莲的插画集。大榴莲的插画风格多样,有唯美清新的童话风,有
《人是选出来的》内容简介:自古以来,用人问题一直是所有组织中的领导者的重要问题,甚至可能是关键性问题。该怎么选人?选什么人
《实现技术创新的TRIZ诀窍:40个创新原理》是阿奇舒勒用来介绍如何使用40个创新原理解决技术矛盾的。本版保留了原著的核心部分和尤
AuthorJasonOstranderwalksdevelopersthroughthedifferentchoicesavailableontheirway...
《人机交互》是学习人机交互课程的教材,介绍了人机交互的发展历史、人机交互技术、交互设备、交互系统设计方法及交互系统评估等
《从零开始学HTML+CSS》分为3篇,共12章。第1篇是HTML基础(第1~2章),第2篇是HTML应用篇(第3~10章),第3篇是CSS的使用(第
“不作恶”的Google何以身陷“三重门”?聪明的Google为何在中国变得不够聪明?强大的Google在与百度的交锋中为何会完败?作者简