本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
函数式编程将改变你思考代码的方式!利用FP技术,C#开发人员可极大地提升状态管理、并发处理和事件处理能力,并更好地长期维护代码。C#提供了灵活性,使你能充分利用函数式技术的优势。《C#函数式编程 编写更优质的C#代码》从全新视角赋予你强大力量。
《C#函数式编程 编写更优质的C#代码》引导你在C#语言中使用函数式思想来解决现实问题;首先介绍函数式编程的原理,分析如何借助C#语言特性实现函数式编程,然后在多个紧贴实用的示例的引导下,讲述函数组合、数据流编程、不可变数据结构以及使用LINQ构建单子组合等主题。
Ⅰ部分 核心概念
1章 介绍函数式编程 3
1.1 什么是函数式编程 4
1.1.1 函数作为一类值 4
1.1.2 避免状态突变 4
1.1.3 编写具有强力保证的程序 5
1.2 C#的函数式语言 8
1.2.1 LINQ的函数式性质 9
1.2.2 C# 6和C# 7中的函数式特性 10
1.2.3 未来的C#将更趋函数化 13
1.3 函数思维 13
1.3.1 映射函数 13
1.3.2 在C#中表示函数 14
1.4 高阶函数 18
1.4.1 依赖于其他函数的函数 18
1.4.2 适配器函数 20
1.4.3 创建其他函数的函数 20
1.5 使用HOF避免重复 21
1.5.1 将安装和拆卸封装到HOF中 23
1.5.2 将using语句转换为HOF 24
1.5.3 HOF的权衡 25
1.6 函数式编程的好处 27
练习 27
小结 28
第2章 为什么函数纯洁性很重要 29
2.1 什么是函数的纯洁性 29
2.1.1 纯洁性和副作用 30
2.1.2 管理副作用的策略 31
2.2 纯洁性和并发性 33
2.2.1 纯函数可良好地并行化 34
2.2.2 并行化不纯函数 35
2.2.3 避免状态的突变 36
2.3 纯洁性和可测性 38
2.3.1 实践:一个验证场景 39
2.3.2 在测试中引入不纯函数 40
2.3.3 为什么很难测试不纯函数 42
2.3.4 参数化单元测试 43
2.3.5 避免标头接口 44
2.4 纯洁性和计算的发展 47
练习 47
小结 48
第3章 设计函数签名和类型 49
3.1 函数签名设计 49
3.1.1 箭头符号 50
3.1.2 签名的信息量有多大 51
3.2 使用数据对象捕获数据 52
3.2.1 原始类型通常不够具体 53
3.2.2 使用自定义类型约束输入 53
3.2.3 编写“诚实的”函数 55
3.2.4 使用元组和对象来组合值 56
3.3 使用Unit为数据缺失建模 58
3.3.1 为什么void不理想 58
3.3.2 使用Unit弥合Action和Func之间的差异 59
3.4 使用Option为数据可能缺失建模 61
3.4.1 你每天都在使用糟糕的API 61
3.4.2 Option类型的介绍 62
3.4.3 实现Option 65
3.4.4 通过使用Option而不是null来获得健壮性 68
3.4.5 Option作为偏函数的自然结果类型 69
练习 73
小结 74
第4章 函数式编程中的模式 77
4.1 将函数应用于结构的内 部值 77
4.1.1 将函数映射到序列上 77
4.1.2 将函数映射到Option 79
4.1.3 Option是如何提高抽象层级的 81
4.1.4 函子 82
4.2 使用ForEach执行副作用 83
4.3 使用Bind来链接函数 85
4.3.1 将返回Option的函数结合起来 85
4.3.2 使用Bind平铺嵌套列表 87
4.3.3 实际上,这被称为单子 88
4.3.4 Return函数 88
4.3.5 函子和单子之间的关系 89
4.4 使用Where过滤值 90
4.5 使用Bind结合Option和IEnumerable 91
4.6 在不同抽象层级上编码 92
4.6.1 常规值与高级值 93
4.6.2 跨越抽象层级 94
4.6.3 重新审视Map与Bind 95
4.6.4 在正确的抽象层级上
工作 96
练习 96
小结 97
第5章 使用函数组合设计程序 99
5.1 函数组合 99
5.1.1 复习函数组合 100
5.1.2 方法链 101
5.1.3 高级值界域中的组合 101
5.2 从数据流的角度进行 思考 102
5.2.1 使用LINQ的可组合
API 102
5.2.2 编写可组合性更好的函数 103
5.3 工作流编程 105
5.3.1 关于验证的一个简单
工作流 106
5.3.2 以数据流的思想进行重构 107
5.3.3 组合带来了更大的灵活性 108
5.4 介绍函数式领域建模 109
5.5 端到端的服务器端 工作流 110
5.5.1 表达式与语句 112
5.5.2 声明式与命令式 112
5.5.3 函数式分层 113
练习 115
小结 115
第Ⅱ部分 函数式风格
第6章 函数式错误处理 119
6.1 表示输出的更安全方式 120
... ...