本书脱离特定的语言特性,关注各种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
全书系统地介绍现代天文知识。绪论简介天文学的发展和字宙概观。用十二章依次阐述天球和星空、天体运动和距离测量、天体辐射和天
Excel数据处理与分析-(附1DVD.含自学视频.技巧视频.应用案例.报表资源.设计素材.PPT资源等) 本书特色《excel数据处理与分析》从全新的角度全面...
《全职妈妈指南》内容简介:目前全国至少有9400万城镇全职妈妈,这个数字还会随着二孩家庭的增多而不断变大。虽然全职妈妈对家庭贡
《Swift语言实战入门(第2版)》内容简介:2014年的苹果WWDC开发者大会上,一款全新的编程语言——Swift语言被公布于世。本书也在同
TRIZisaunique,algorithmicapproachtoproblemsolvingthatallowsengineers,plannersand...
内容简介本书面向智能控制学科前沿,从工程应用的角度出发,比较全面地介绍了智能控制的基本概念、理论和系统设计方法及微机实现
实用Linux Shell编程 本书特色 本书系统地介绍了在linux系统中广泛使用的bash脚本语言。全书内容的安排由浅入深,体系合理。先讲解脚本的概念和学习...
《家庭预防中风100招》内容简介:全书分上下两篇。上篇主要讲述中风的基础知识,怎么去认识中风这个疾病相关的基础知识,下篇主要讲
《所谓好管理,就是精准执行》内容简介:本书执行力决定了团队的生死存亡,决定了团队是否能够发展壮大,更决定了管理者的价值。如
《唤醒孩子学习天赋》内容简介:1800000粉丝的育儿账号“科学小子钦”主理人 赵邈 力作 在陪伴中总结心得,在实践中改良方法 发掘孩
TRIZ(发明问题解决理论)属于苏联的国家机密,在军事、工业、航空航天等领域均发挥了巨大作用,成为创新的“点金术”,让西方发达
《金融创新与金融中心建设》内容简介:本书主要从金融创新的视角研究上海国际金融中心建设和发展问题。在分析上海国际金融中心建设
Java和Android开发学习指南-(第2版) 本书特色 本书是java语言学习指南,特别针对使用java进行android应用程序开发展开了详细介绍。全书共...
《四君主》内容简介:英格兰国王亨利八世、法国国王弗朗索瓦一世、神圣罗马帝国皇帝查理五世和奥斯曼帝国苏丹苏莱曼大帝,这四位伟
《真实经济:消费者真正渴望的是什么》内容简介:在体验经济占主导的21世纪.真实性取代质量成为新的消费者敏感性,就像当初质量取
《追梦的笨笨》内容简介:本书写给大学生的书,是一本实用的留学指南,也是一本励志书。全书精髓在于Sonia老师7年美国名校留学申请
《不可不知的人性》内容简介:我们常说:一个人越炫耀什么,就说明他内心越缺少什么。一个人越在意什么,那就是让他倍感自卑的地方
《零基础学C语言》的特点是内容全面、翔实,通俗易懂,循序渐进地介绍了C语言各方面的知识,重点突出。《零基础学C语言》含有大量
《婚礼纪实摄影宝典》内容简介:《婚礼纪实摄影宝典》是一本介绍如何拍摄婚礼纪实影像的专业书籍,书中通过图文结合的方式讲解了婚
流量的秘密: Google Analytics网站分析与优化技巧(第3版) 本书特色 系统介绍建立全方位网站指标体系的配置方法和*佳实施方案细致解读google...