×
暂无评论
图文详情
  • ISBN:9787302680154
  • 装帧:平装-胶订
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:0
  • 出版时间:2025-03-01
  • 条形码:9787302680154 ; 978-7-302-68015-4

本书特色

经过数十年的低调发展,函数式编程终于迎来了它的春天。它以简单明了、通俗易懂的代码支持异步、并发处理,使得函数式编程的一些精华逐渐融入到传统的面向对象语言之中,如C#语言和Java语言。《深入C#函数式编程》深入浅出,为广大C#程序员揭示了如何巧用函数式编程的特性,而这并不需要重新学习一门全新的语言。
C#语言和F#语言共享着同一个运行时环境,因此在C#语言中也能运用大部分F#的函数式特性。《深入C#函数式编程》详细阐述了如何在C#语言中快速编写函数式代码,无需额外安装依赖项或.NET3之后的任何新特性。《深入C#函数式编程》可以帮助读者深刻理解为何函数式编程的理念能够立竿见影地提升工作效率。
● 探究函数式编程的内涵及其起源;
● 通过熟悉的语言领略函数式范式的独特魅力;
● 立刻开始在C#中以函数式方式编写代码,摆脱对第三方库的依赖;
● 编写出更加稳定、更少出错、更易于测试的代码;
● 重新审视C#中那些非传统的结构方式;
● 深入探讨在业务环境中应用函数式C#的实用价值。


内容简介

"《深入C#函数式编程》阐述了函数式编程的历史背景、基本概念和实践,展示了如何借助于 C# 语言和函数式编程来增强代码的可读性和可维护性以及提高代码的质量。书中还探讨了 C# 语言中非传统结构的使用方法以及如何通过函数式编程重构现有的代码。此外,本书还通过丰富的案例分析了在实际业务场景中应用 C# 函数式编程能带来哪些实际的好处。 通过本书的阅读,广大 C# 程序员——无论是初学者还是有经验的开发者,都可以从中学到如何巧用函数式编程来显著提高工作效率和代码质量。"

前言

我经常参加开发者大会。从这些会议中,我观察到函数式编程(functional programming,FP)的讨论热度似乎一年高过一年。许多会议都有一个专门讨论函数式编程的分论坛,并且其他演讲中多少也会提到这个主题。
函数式编程的重要性正在稳步上升,这背后有哪些原因呢?
原因在于,函数式编程是软件开发史上*伟大的创新之一。它不仅很酷,还充满了乐趣。
随着容器化和无服务器应用等概念的兴起,函数式编程不再只是开发者的业余爱好,也不是那种几年后就被人遗忘的短暂热潮,而是成为一个能为利益相关者带来实质性好处的重要概念。
此外,在 .NET 生态系统中,函数式编程的推广还得益于一些关键因素。例如C# 语言的首席设计师马德斯·托格森,他是函数式编程的忠实拥趸,同时也是将函数式编程引入 .NET 的主要推动者之一。另外,作为 .NET 家族中的函数式编程语言,F# 语言的影响也不容忽视。F# 与 C# 共享同一个运行时环境,所以F# 团队开发的许多函数式特性往往也会以某种形式集成到 C# 语言中。

目录

● 第 1 章 绪论 1
● 第 I 部分 我们已经在做的事 27
● 第 2 章 我们目前能做些什么 29
● 第 3 章 C# 7.0 及后续版本的函数式编程 53
● 第 4 章 函数式代码:巧干胜过苦干 73
● 第 II 部分 深度学习函数式编程 93
● 第 5 章 高阶函数 95
● 第 6 章 可区分联合 123
● 第 7 章 函数式流程 145
● 第 8 章 柯里化和偏函数 177
● 第 9 章 不定循环 189
● 第 10 章 记忆化 207
● 第 III 部分 走出迷雾 215
● 第 11 章 实用函数式 C# 语言 217
● 第 12 章 NuGet 中的现有函数式编程库 239
● 第 13 章 火星之旅 253
● 第 14 章 结语 283
详细目录
第 1 章 绪论 1
1.1 函数式编程是什么 1
1.2 函数式编程的特性 3
1.2.1 不变性 3
1.2.2 高阶函数 3
1.2.3 首选表达式而非语句 5
1.2.4 基于表达式的编程 6
1.2.5 引用透明性 7
1.2.6 递归 9
1.2.7 真·递归 9
1.2.8 模式匹配 10
1.2.9 无状态 12
1.3 制作蛋糕 13
1.3.1 命令式蛋糕 13
1.3.2 声明式蛋糕 14
1.4 函数式编程的起源 15
1.5 还有别的人在用函数式编程吗 17
1.5.1 纯函数式语言 17
1.5.2 首先学习纯函数式语言是否值得 18
1.5.3 F# 怎么样?是否有必要学 19
1.5.4 多范式语言 20
1.6 函数式编程的好处 21
1.6.1 简洁 21
1.6.2 可测试性 22
1.6.3 健壮性 22
1.6.4 可预测性 22
1.6.5 更好地支持并发 23
1.6.6 降低代码噪音 24
1.7 函数式编程的*佳应用场景 24
1.8 更适合使用其他范式的场景 25
1.9 函数式编程能应用到何种程度 25
1.10 单子实际上,先不用担心这个 26
1.11 小结 26
第 I 部分 我们已经在做的事
第 2 章 我们目前能做些什么 29
2.1 开始 29
2.2 编写**段函数式代码 30
2.2.1 非函数式的电影查询示例 30
2.2.2 函数式的电影查询示例 31
2.3 以结果为导向的编程 33
2.4 可枚举对象 34
2.5 首选表达式而非语句 38
2.5.1 低调的 Select 38
2.5.2 合而为一:聚合的艺术 42
2.5.3 自定义迭代行为 43
2.6 使代码不可变 46
2.7 完整的函数式流程 48
2.8 更进一步:提升函数式编程技能 51
2.9 小结 52
第 3 章 C# 7.0 及后续版本的函数式编程 53
3.1 元组 53
3.2 模式匹配 54
3.2.1 银行账户的过程式解决方案 54
3.2.2 C# 7.0 中的模式匹配 57
3.2.3 C# 8.0 中的模式匹配 58
3.2.4 C# 9.0 中的模式匹配 60
3.2.5 C# 10.0 中的模式匹配 60
3.2.6 C# 11.0 中的模式匹配 61
3.3 只读结构 62
3.4 Init-Only Setter 64
3.5 记录类型 65
3.6 可空引用类型 68
3.7 展望未来 70
3.7.1 可区分联合 70
3.7.2 活动模式 71
3.8 小结 72
第 4 章 函数式代码:巧干胜过苦干 73
4.1 是时候展现 Func 的魔力了 74
4.1.1 可枚举对象中的 Func 74
4.1.2 超级简单的验证器 75
4.1.3 C# 语言旧版本中的模式匹配 78
4.2 让字典更有用 82
4.3 对值进行解析 84
4.4 自定义枚举 86
4.4.1 查询相邻元素 86
4.4.2 在满足条件前持续迭代 89
4.5 小结 91
第 II 部分 深入学习函数式编程
第 5 章 高阶函数 95
5.1 问题报告 96
5.2 关于 thunk 99
5.3 链式调用函数 102
5.4 分叉组合子 104
5.5 Alt 组合子 106
5.6 组合 108
5.7 关于 Transduce 110
5.8 Tap 函数 112
5.9 try/catch 块 113
5.10 处理空值 118
5.11 更新可枚举对象 120
5.12 小结 122
第 6 章 可区分联合 123
6.1 假日时光 123
6.2 使用可辨识合联合的旅游团应用 125
6.3 薛定谔的联合 127
6.4 命名规范 128
6.5 数据库查询 131
6.6 发送电子邮件 133
6.7 控制台输入 134
6.8 泛型联合 138
6.9 Maybe 类型 138
6.10 Result 类型 139
6.11 对比 Maybe 和 Result 140
6.12 Either 类型 143
6.13 小结 144
第 7 章 函数式流程 145
7.1 再论 Maybe 类型 145
7.1.1 Maybe 类型和调试 150
7.1.2 对比 Map() 函数和 Bind() 函数 151
7.1.3 Maybe 类型和基元类型 152
7.1.4 Maybe 对象和日志记录 154
7.1.5 Maybe 对象和 Async 158
7.1.6 Maybe 对象的嵌套 159
7.2 定律 162
7.2.1 左恒等律 162
7.2.2 右恒等律 162
7.2.3 结合律 163
7.3 Reader 单子 164
7.4 State 单子 166
7.5 Maybe 单子与 State 单子 168
7.6 示例:你可能已经用过的单子 169
7.6.1 可枚举对象 169
7.6.2 Task 170
7.7 其他结构 171
7.8 工作示例 173
7.9 小结 175
第 8 章 柯里化和偏函数 177
8.1 柯里化和大型函数 178
8.2 柯里化和高阶函数 182
8.3 在 NET 中使用柯里化 183
8.4 偏函数 185
8.5 在 NET 中实现偏函数 186
8.6 小结 187
第 9 章 不定循环 189
9.1 递归 192
9.2 什么是 Trampolining 194
9.3 自定义迭代器 197
9.3.1 理解枚举器的结构 198
9.3.2 实现自定义枚举器 199
9.3.3 循环次数不定的可枚举对象 201
9.3.4 使用不定迭代器 204
9.4 小结 206
第 10 章 记忆化 207
10.1 贝肯数 207
10.2 在 C# 语言中实现记忆化 212
10.3 小结 214
第 III 部分 走出迷雾
第 11 章 实用函数式 C# 语言 217
11.1 函数式 C# 语言与性能 217
11.1.1 基线:命令式解决方案 219
11.1.2 性能结果 220
11.1.3 确定循环的解决方案 221
11.1.4 不定循环的解决方案 222
11.2 这一切意味着什么 229
11.3 对函数式 C# 语言的担忧和疑问 231
11.3.1 函数式代码应该在代码库中占多大比例 231
11.3.2 应该如何构建函数式 C# 语言解决方案 232
11.3.3 如何在不同应用程序之间共享函数式方法 232
11.3.4 这个披萨是你点的吗 233
11.3.5 如何说服团队成员也这么做 233
11.3.6 是否应该在解决方案中包含 F# 项目 235
11.3.7 函数式编程能解决所有问题吗 235
11.3.8 说到 007,你更喜欢康纳利、摩尔还是克雷格 236
11.3.9 如何以函数式思维解决问题 236
11.3.10 如果完全不能通过函数式编程风格的代码实现我想要的高性能,怎么办 237
11.4 小结 237
第 12 章 NuGet 中的现有函数式编程库 239
12.1 OneOf 库 240
12.2 LanguageExt 库 242
12.2.1 Option 243
12.2.2 Either 244
12.2.3 记忆化 245
12.2.4 Reader 246
12.2.5 State 246
12.2.6 LanguageExt 小结 247
12.3 Functional.Maybe 库 247
12.4 CsharpFunctionalExtensions 库 249
12.4.1 Maybe 单子 249
12.4.2 Result 250
12.4.3 Fluent Assertions 251
12.4.4 CSharpFunctionalExtensions 小结 251
12.5 F# 编程语言 252
12.6 小结 252
第 13 章 火星之旅 253
13.1 故事 253
13.2 技术细节 254
13.3 创建游戏 256
13.3.1 解决方案 256
13.3.2 通信 257
13.3.3 玩法说明 258
13.3.4 设置物品栏 259
13.3.5 游戏循环 267
13.4 小结 280
第 14 章 结语 283
14.1 读到这里,你的感受如何 283
14.2 接下来走向何方 284
14.2.1 更多的函数式 C# 语言 284
14.2.2 学习 F# 285
14.2.3 纯函数式编程语言 285
14.3 那我呢 286

展开全部

作者简介

西蒙·J.潘特(Simon J. Painter)拥有20年专业开发经验,对.NET各个版本在各个行业的应用非常熟悉。他活跃于.NET用户组和行业会议,以演讲嘉宾的方式与业内广大开发人员分享函数式编程和.NET常见开发话题。西蒙与他的妻子和孩子居住在英国。
微软MVP,自2005年以来,一直深耕于软件开发领域,使用过.NET的每一个版本。他在很多不同的行业中工作过。日常工作之余,他喜欢参加用户小组和会议,经常在会上发表函数式编程和.NET相关主题的演讲。小时候读懂父亲的Sinclair ZX Spectrum BASIC手册之后,西蒙就成了一名编程爱好者。除了编程,他还喜欢玩音乐、玩填字游戏、玩《战斗幻想》以及痛饮咖啡——虽然明知对健康没有什么好处。目前,他和妻子、女儿生活在英国的一个小镇上。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航