本书脱离特定的语言特性,关注各种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++新经典》内容简介:本书是一部C/C++编程语言书,定位在C/C++语言本身的讲解上面。本书包含纸质图书以及教学源代码文件。本书共
本书出自第一线JAVA编程专家之手,为读者展现正确、高效、强固之JAVA代码实践方案。这本取材广泛的掼,以不同层级的专家经验,帮
Google地图、Flickr、YouTube、Amazon等众多开放平台的涌现,使我们能够方便地将海量的外部Web数据灵活有序地结合起来,创建出各
本书通过城市设计的思想、理论、研究和实践,以无与伦比的广度系统展开,帮助读者通过一个个逐步推进的概念形成城市设计的全面视
1997年5月11日,全世界数百万人通过电视观看了一场惊人的胜利——一台计算机战胜了欲捍卫世界冠军称号的卡斯帕罗夫,此举震惊了国
本书着重介绍现代密码学的加密思想及其实现方法,内容涉及数论、概率论、抽象代数、加密算法的思想及复杂度理论。本书介绍了密码
《20世纪的中国乡村》内容简介:本书从四个部分,系统呈现20世纪中国乡村社会发展状况。第一部分,探讨中国近代社会史研究的历程、
SEO实战密码-60天网站流量提高20倍-第3版 本书特色 本书是畅销书升级版,详细和系统地介绍了正规、有效的seo实战技术,包括为什么要做seo、搜索引擎工作...
《无人零售:技术驱动商业变革》内容简介:本书分为上下两篇,上篇主要讲述了无人零售的三个核心问题:政策、技术、信息安全;下篇
半结构化数据管理关键算法研究与实证 内容简介在云计算和物联网等新兴信息技术高速发展的今天,由于半结构化数据具有灵活易扩展的存储结构,已被许多信息系统和应用作为公...
如何让你的iPad或者iPhone应用在AppStore中出类拔萃?许多书籍单纯从技术方面来探究苹果应用的设计和开发,而本书在探究这些问题
《李叔同的佛心禅韵:花雨满天悟禅机(新版)》内容简介:无尽奇珍供世眼,一轮圆月耀天心。大师以书画名家而为出世高僧,复以翰墨
《水的秘密》内容简介:水是地球上最常见的物质之一,是包括人类在内所有生命生存的重要资源,也是生物体最重要的组成部分。水在生
《上海城市公共开放空间与休闲研究》内容简介:城市公共开放空间是市民日常生活、工作、学习之余接触最多的场所,也是决定城市宜居
《计算机体系结构》是一本强调从实践中学理念的计算机体系结构的教材。作者结合自身从事国产龙芯高性能通用处理器研制的实践,以
《Web性能实践日志》包含了众多领域专家的关于Web性能的文章。其中包括了许多性能相关的主题,如开源工具、缓存、移动网络和应用
《网络推手运作揭秘:挑战互联网公共空间》是第一本运用参与观察法(Ethnography)深入研究网络推手运作的著作。作者采用网上资料搜