本书脱离特定的语言特性,关注各种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
新世纪五笔字型输入法-最新汉字输入法 本书特色 《新世纪五笔字型输入法》:由王玛字型发明人王水民教授授权。配有由中国王码公司提供的新世纪输入法正版软件。新世纪五...
《从零开始构建深度前馈神经网络》内容简介:2016年,阿法狗(AlphaGo)为全世界打开了一条窄窄的门缝,通往未来之路就此展现。通过
《大国寡品》内容简介:本书正是对中国制造业现状形象的概括:中国制造有数量没质量、有商标没品牌,与国际大牌"同质不同价”。同样
《Qtfor Python PySide6GUI界面开发详解与实例》内容简介:本书详细介绍了PySide6提供的各种可视化类进行可视化界面编程。本书对各
《看·听·读(精装)》内容简介:本书为《列维-斯特劳斯文集》之一。在岁月的长河中,作者看过许多画,听过许多音乐,读过许多书,
Thismust-readtextforallwebdesignersdeliversvitalinformationonhowtoemployinformat...
《通信原理(第3版)》系统、深入地介绍了通信系统和通信网的基本原理与基本分析方法,是通信及信息专业的专业基础课教材。全书共1
由塞贝尔编著的《实用CommonLisp编程》是一本不同寻常的CommonLisp入门书。《实用CommonLisp编程》首先从作者的学习经过及语言历
《玩“赚”短视频:抢占流量新阵地》内容简介:本书将从概念解读、发展趋势分析、思维方式、顶层设计、运营策略、运营维护、发展前
DreamCase不是台灣一般認知的「Mook」,而是「MagBook」,以雜誌的概念、形式、內容來從事書的編輯,因此呈現方式可以更自由、更
《快速成型技术与应用》内容简介:本书对当今快速成型技术与应用的新信息进行了系统、全面的更新介绍,详细介绍了目前常用快速成型
《海外征程2》内容简介:本书改编自华为前员工的真实经历,讲述了海外开拓者在海外拼搏的热血故事。拉美市场的战斗正式打响。4G网络
《江苏风俗史》内容简介:本书是“江苏文脉整理与研究工程”研究成果,由南京大学博士生导师马俊亚教授完成。作者按时间顺序,对江
本书概念清晰、内容新颖、实例详尽,是一本有关设计、实现和有效使用C语言库函数,掌握创建可重用C语言软件模块技术的参考指南。
《党政机关公文标准与格式应用指南》内容简介:本书以新版《党政机关公文格式》国家标准和《党政机关公文处理工作条例》为理论基础
《我是90后,我是创业家》内容简介:第1本揭秘17个90后精彩创业故事。他们是:脸萌创始人郭列、北大硕士卖米粉的张天一、微博《我只
Dreamweaver8\Flash8\Fireworks8网页制作从入门到精通 本书特色 《Dreamweaver 8、Flash 8、Fireworks 8...
《奔跑吧Linux内核(入门篇)》内容简介:本书是一本介绍Linux内核实践的入门书,基于Linux4.0内核,重点讲解Linux内核的理论和实验
《构建跨平台app:jquerymobile移动应用实战》分为4篇,第一篇是移动开发入门篇,介绍了jquerymobile、html5和移动开发的一些基础
《CSS(使用指南)(影印版)》主要内容:层叠样式表(CSS)能让你内心的设计思想迸发出来并得以实现。不过,将CSS与网站底层的HTML页