作者:
[美] Neal Ford
出版社: 人民邮电出版社
原作名: Functional Thinking
译者: 郭晓刚
出版年: 2015-8
页数: 162
定价: 49.00元
装帧: 平装
ISBN: 9787115400413
出版社: 人民邮电出版社
原作名: Functional Thinking
译者: 郭晓刚
出版年: 2015-8
页数: 162
定价: 49.00元
装帧: 平装
ISBN: 9787115400413
内容简介 · · · · · ·
本书脱离特定的语言特性,关注各种OOP语言的共同实践做法,展示如何通过函数式语言解决问题。例如,如何利用函数式语言,通过高阶函数、多元方法等完成代码重用。知名软件架构师Neal Ford为我们展示不同的编程范式,帮我们完成从Java命令式编程人员,到使用Java、Clojure、Scala函数式编程人员的完美转变,建立对函数式语言的语法和语义的良好理解。
函数式编程思维的创作者
· · · · · ·
-
尼尔·福特 作者
作者简介 · · · · · ·
Neal Ford
在跨国IT咨询公司ThoughtWorks担任总监、软件架构师和文化基因传播人。他精通各种编程语言,主要的咨询业务是大规模企业应用的设计、构建和工程实践。他还是一位国际知名的讲师,登上过全世界各种开发者会议的讲台。
目录 · · · · · ·
译者序 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 Groovy 87
5.4.2 Scala 89
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 8 125
7.1.1 函数式接口 126
7.1.2 Optional类型 128
7.1.3 Java 8的stream 128
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
· · · · · · (收起)
前言 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 Groovy 87
5.4.2 Scala 89
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 8 125
7.1.1 函数式接口 126
7.1.2 Optional类型 128
7.1.3 Java 8的stream 128
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
· · · · · · (收起)
"函数式编程思维"试读 · · · · · ·
我们用几分钟来想象一下自己是一名伐木工人,手里有林场里最好的斧子,因此你是 工作效率最高的。突然有一天场里来了个推销的,他把一种新的砍树工具——链锯——给夸到了天上去。这人很有说服力,所以你也买了一把,不过你不懂得怎么用。你估摸着按照自己原来擅长的砍树方法,把链锯大力地挥向树干——不知道要先发动它。“链锯不过是时髦的样子货罢了”,没砍几下你就得出了这样的结论..
· · · · · · (查看全部试读)
喜欢读"函数式编程思维"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"函数式编程思维"的人也喜欢 · · · · · ·
函数式编程思维的书评 · · · · · · ( 全部 5 条 )
入门函数式编程的好书
薄薄的一本书,通过对比 Java, Groovy, Scala, Clojure 几种 JVM 上的语言实现,介绍函数式编程的基础知识,对了解函数式的编程范式很有帮助。 函数式有什么好的呢? 命令式编程为了性能会在将不同的任务交织起来一起执行,牺牲了代码的清晰。而函数式编程则使用 map(), filter...
(展开)
> 更多书评 5篇
这本书的其他版本 · · · · · · ( 全部2 )
-
O'Reilly Media (2014)7.3分 28人读过
以下书单推荐 · · · · · · ( 全部 )
- 软件工艺 (咖啡屋的鼠标)
- 学习Clojure (视界)
- 书籍列表 (十甫寸)
- 3.java函数式编程 (葡萄)
- Clojure编程 (葡萄)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于函数式编程思维的评论:
feed: rss 2.0
1 有用 jdchi 2020-04-12 14:46:13
有学到几点思想。
0 有用 水属性笨蛋 2021-04-07 23:03:19
其实讲得还算容易理解,但是没有怎么讲lambda calculus,而且涉及的语言太多了,有点头晕。
0 有用 aymao 2015-12-07 01:21:23
读了这本书,很有启发。
0 有用 asen 2022-04-27 20:54:25
给java程序员的函数式编程从入门到放弃
0 有用 卡莱 2017-11-06 16:46:04
前几章还行,后面就有点泛泛而谈了。
0 有用 乐陶陶 2024-04-06 10:19:08 上海
面向过程和面向对象现在还在软件工程中广泛使用,前者是自发使用,后者是有意识的软件设计,但也不能应对复杂性。这里的面向函数提供了新思路,限制自定义数据结构,把设计精力集中在标准数据结构和可重用的函数上。
0 有用 lennon 2023-02-04 17:18:36 云南
介绍了函数式编程的基本概念,这些概念无关任何语言,在后续遇到不同语言的函数式编程模型时均适用。当用过某种语言的map、reduce、filter 后再来看,就会明白了,当然真正的函数式编程远不止这些,但是这些概念能够更轻松的去学习一些更高级的函数式语言,例如 schema, lisp, ML 等,个人还是很喜欢这本书的
0 有用 Sherlock 2022-12-31 14:13:05 广东
泛泛而谈,看完只记得要用filter map reduce。
0 有用 左亦 2022-08-05 19:25:39
简单了解
0 有用 asen 2022-04-27 20:54:25
给java程序员的函数式编程从入门到放弃