注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)C/C++及其相關(guān)深入C#函數(shù)式編程

深入C#函數(shù)式編程

深入C#函數(shù)式編程

定 價(jià):¥119.00

作 者: [英] 西蒙·J.潘特(Simon J. Painter)著,周子衿 譯
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787302680154 出版時(shí)間: 2025-03-01 包裝: 平裝-膠訂
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《深入C#函數(shù)式編程》闡述了函數(shù)式編程的歷史背景、基本概念和實(shí)踐,展示了如何借助于 C# 語(yǔ)言和函數(shù)式編程來(lái)增強(qiáng)代碼的可讀性和可維護(hù)性以及提高代碼的質(zhì)量。書(shū)中還探討了 C# 語(yǔ)言中非傳統(tǒng)結(jié)構(gòu)的使用方法以及如何通過(guò)函數(shù)式編程重構(gòu)現(xiàn)有的代碼。此外,本書(shū)還通過(guò)豐富的案例分析了在實(shí)際業(yè)務(wù)場(chǎng)景中應(yīng)用 C# 函數(shù)式編程能帶來(lái)哪些實(shí)際的好處。通過(guò)本書(shū)的閱讀,廣大 C# 程序員——無(wú)論是初學(xué)者還是有經(jīng)驗(yàn)的開(kāi)發(fā)者,都可以從中學(xué)到如何巧用函數(shù)式編程來(lái)顯著提高工作效率和代碼質(zhì)量。

作者簡(jiǎn)介

  西蒙·J.潘特(Simon J. Painter)擁有20年專(zhuān)業(yè)開(kāi)發(fā)經(jīng)驗(yàn),對(duì).NET各個(gè)版本在各個(gè)行業(yè)的應(yīng)用非常熟悉。他活躍于.NET用戶組和行業(yè)會(huì)議,以演講嘉賓的方式與業(yè)內(nèi)廣大開(kāi)發(fā)人員分享函數(shù)式編程和.NET常見(jiàn)開(kāi)發(fā)話題。西蒙與他的妻子和孩子居住在英國(guó)。微軟MVP,自2005年以來(lái),一直深耕于軟件開(kāi)發(fā)領(lǐng)域,使用過(guò).NET的每一個(gè)版本。他在很多不同的行業(yè)中工作過(guò)。日常工作之余,他喜歡參加用戶小組和會(huì)議,經(jīng)常在會(huì)上發(fā)表函數(shù)式編程和.NET相關(guān)主題的演講。小時(shí)候讀懂父親的Sinclair ZX Spectrum BASIC手冊(cè)之后,西蒙就成了一名編程愛(ài)好者。除了編程,他還喜歡玩音樂(lè)、玩填字游戲、玩《戰(zhàn)斗幻想》以及痛飲咖啡——雖然明知對(duì)健康沒(méi)有什么好處。目前,他和妻子、女兒生活在英國(guó)的一個(gè)小鎮(zhèn)上。

圖書(shū)目錄

● 第 1 章 緒論 1
● 第 I 部分 我們已經(jīng)在做的事 27
● 第 2 章 我們目前能做些什么 29
● 第 3 章 C# 7.0 及后續(xù)版本的函數(shù)式編程 53
● 第 4 章 函數(shù)式代碼:巧干勝過(guò)苦干 73
● 第 II 部分 深度學(xué)習(xí)函數(shù)式編程 93
● 第 5 章 高階函數(shù) 95
● 第 6 章 可區(qū)分聯(lián)合 123
● 第 7 章 函數(shù)式流程 145
● 第 8 章 柯里化和偏函數(shù) 177
● 第 9 章 不定循環(huán) 189
● 第 10 章 記憶化 207
● 第 III 部分 走出迷霧 215
● 第 11 章 實(shí)用函數(shù)式 C# 語(yǔ)言 217
● 第 12 章 NuGet 中的現(xiàn)有函數(shù)式編程庫(kù) 239
● 第 13 章 火星之旅 253
● 第 14 章 結(jié)語(yǔ) 283
詳細(xì)目錄
第 1 章 緒論   1
1.1 函數(shù)式編程是什么       1
1.2 函數(shù)式編程的特性       3
1.2.1 不變性           3
1.2.2 高階函數(shù)       3
1.2.3 首選表達(dá)式而非語(yǔ)句          5
1.2.4 基于表達(dá)式的編程          6
1.2.5 引用透明性       7
1.2.6 遞歸     9
1.2.7 真·遞歸       9
1.2.8 模式匹配         10
1.2.9 無(wú)狀態(tài)         12
1.3 制作蛋糕      13
1.3.1 命令式蛋糕     13
1.3.2 聲明式蛋糕     14
1.4 函數(shù)式編程的起源     15
1.5 還有別的人在用函數(shù)式編程嗎      17
1.5.1 純函數(shù)式語(yǔ)言     17
1.5.2 首先學(xué)習(xí)純函數(shù)式語(yǔ)言是否值得   18
1.5.3 F# 怎么樣?是否有必要學(xué)          19
1.5.4 多范式語(yǔ)言     20
1.6 函數(shù)式編程的好處     21
1.6.1 簡(jiǎn)潔         21
1.6.2 可測(cè)試性         22
1.6.3 健壯性         22
1.6.4 可預(yù)測(cè)性         22
1.6.5 更好地支持并發(fā)            23
1.6.6 降低代碼噪音     24
1.7 函數(shù)式編程的最佳應(yīng)用場(chǎng)景    24
1.8 更適合使用其他范式的場(chǎng)景    25
1.9 函數(shù)式編程能應(yīng)用到何種程度      25
1.10 單子實(shí)際上,先不用擔(dān)心這個(gè)        26
1.11 小結(jié)        26
第 I 部分 我們已經(jīng)在做的事
第 2 章 我們目前能做些什么    29
2.1 開(kāi)始      29
2.2 編寫(xiě)第一段函數(shù)式代碼        30
2.2.1 非函數(shù)式的電影查詢示例    30
2.2.2 函數(shù)式的電影查詢示例        31
2.3 以結(jié)果為導(dǎo)向的編程     33
2.4 可枚舉對(duì)象  34
2.5 首選表達(dá)式而非語(yǔ)句     38
2.5.1 低調(diào)的 Select      38
2.5.2 合而為一:聚合的藝術(shù)        42
2.5.3 自定義迭代行為            43
2.6 使代碼不可變         46
2.7 完整的函數(shù)式流程     48
2.8 更進(jìn)一步:提升函數(shù)式編程技能      51
2.9 小結(jié)      52
第 3 章 C# 7.0 及后續(xù)版本的函數(shù)式編程      53
3.1 元組      53
3.2 模式匹配      54
3.2.1 銀行賬戶的過(guò)程式解決方案       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 只讀結(jié)構(gòu)      62
3.4 Init-Only Setter        64
3.5 記錄類(lèi)型      65
3.6 可空引用類(lèi)型         68
3.7 展望未來(lái)      70
3.7.1 可區(qū)分聯(lián)合     70
3.7.2 活動(dòng)模式         71
3.8 小結(jié)      72
第 4 章 函數(shù)式代碼:巧干勝過(guò)苦干      73
4.1 是時(shí)候展現(xiàn) Func 的魔力了      74
4.1.1 可枚舉對(duì)象中的 Func       74
4.1.2 超級(jí)簡(jiǎn)單的驗(yàn)證器        75
4.1.3 C# 語(yǔ)言舊版本中的模式匹配     78
4.2 讓字典更有用         82
4.3 對(duì)值進(jìn)行解析         84
4.4 自定義枚舉  86
4.4.1 查詢相鄰元素     86
4.4.2 在滿足條件前持續(xù)迭代        89
4.5 小結(jié)      91
第 II 部分 深入學(xué)習(xí)函數(shù)式編程
第 5 章 高階函數(shù)         95
5.1 問(wèn)題報(bào)告      96
5.2 關(guān)于 thunk    99
5.3 鏈?zhǔn)秸{(diào)用函數(shù)       102
5.4 分叉組合子           104
5.5 Alt 組合子  106
5.6 組合        108
5.7 關(guān)于 Transduce          110
5.8 Tap 函數(shù)     112
5.9 try/catch 塊        113
5.10 處理空值  118
5.11 更新可枚舉對(duì)象     120
5.12 小結(jié)      122
第 6 章 可區(qū)分聯(lián)合       123
6.1 假日時(shí)光    123
6.2 使用可辨識(shí)合聯(lián)合的旅游團(tuán)應(yīng)用    125
6.3 薛定諤的聯(lián)合       127
6.4 命名規(guī)范    128
6.5 數(shù)據(jù)庫(kù)查詢           131
6.6 發(fā)送電子郵件       133
6.7 控制臺(tái)輸入           134
6.8 泛型聯(lián)合    138
6.9 Maybe 類(lèi)型           138
6.10 Result 類(lèi)型          139
6.11 對(duì)比 Maybe 和 Result        140
6.12 Either 類(lèi)型          143
6.13 小結(jié)      144
第 7 章 函數(shù)式流程       145
7.1 再論 Maybe 類(lèi)型      145
7.1.1 Maybe 類(lèi)型和調(diào)試         150
7.1.2 對(duì)比 Map() 函數(shù)和 Bind() 函數(shù)   151
7.1.3 Maybe 類(lèi)型和基元類(lèi)型     152
7.1.4 Maybe 對(duì)象和日志記錄     154
7.1.5 Maybe 對(duì)象和 Async      158
7.1.6 Maybe 對(duì)象的嵌套         159
7.2 定律        162
7.2.1 左恒等律      162
7.2.2 右恒等律      162
7.2.3 結(jié)合律      163
7.3 Reader 單子           164
7.4 State 單子   166
7.5 Maybe 單子與 State 單子    168
7.6 示例:你可能已經(jīng)用過(guò)的單子        169
7.6.1 可枚舉對(duì)象      169
7.6.2 Task           170
7.7 其他結(jié)構(gòu)    171
7.8 工作示例    173
7.9 小結(jié)        175
第 8 章 柯里化和偏函數(shù)      177
8.1 柯里化和大型函數(shù)       178
8.2 柯里化和高階函數(shù)       182
8.3 在  NET 中使用柯里化       183
8.4 偏函數(shù)    185
8.5 在  NET 中實(shí)現(xiàn)偏函數(shù)       186
8.6 小結(jié)        187
第 9 章 不定循環(huán)       189
9.1 遞歸        192
9.2 什么是 Trampolining    194
9.3 自定義迭代器       197
9.3.1 理解枚舉器的結(jié)構(gòu)         198
9.3.2 實(shí)現(xiàn)自定義枚舉器         199
9.3.3 循環(huán)次數(shù)不定的可枚舉對(duì)象    201
9.3.4 使用不定迭代器         204
9.4 小結(jié)        206
第 10 章 記憶化        207
10.1 貝肯數(shù)      207
10.2 在 C# 語(yǔ)言中實(shí)現(xiàn)記憶化     212
10.3 小結(jié)      214
第 III 部分 走出迷霧
第 11 章 實(shí)用函數(shù)式 C# 語(yǔ)言           217
11.1 函數(shù)式 C# 語(yǔ)言與性能      217
11.1.1 基線:命令式解決方案         219
11.1.2 性能結(jié)果       220
11.1.3 確定循環(huán)的解決方案      221
11.1.4 不定循環(huán)的解決方案      222
11.2 這一切意味著什么     229
11.3 對(duì)函數(shù)式 C# 語(yǔ)言的擔(dān)憂和疑問(wèn)        231
11.3.1 函數(shù)式代碼應(yīng)該在代碼庫(kù)中占多大比例        231
11.3.2 應(yīng)該如何構(gòu)建函數(shù)式 C# 語(yǔ)言解決方案         232
11.3.3 如何在不同應(yīng)用程序之間共享函數(shù)式方法        232
11.3.4 這個(gè)披薩是你點(diǎn)的嗎      233
11.3.5 如何說(shuō)服團(tuán)隊(duì)成員也這么做     233
11.3.6 是否應(yīng)該在解決方案中包含 F# 項(xiàng)目     235
11.3.7 函數(shù)式編程能解決所有問(wèn)題嗎       235
11.3.8 說(shuō)到 007,你更喜歡康納利、摩爾還是克雷格        236
11.3.9 如何以函數(shù)式思維解決問(wèn)題     236
11.3.10 如果完全不能通過(guò)函數(shù)式編程風(fēng)格的代碼實(shí)現(xiàn)我想要的高性能,怎么辦     237
11.4 小結(jié)      237
第 12 章 NuGet 中的現(xiàn)有函數(shù)式編程庫(kù)      239
12.1 OneOf 庫(kù)  240
12.2 LanguageExt 庫(kù)       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 小結(jié)       247
12.3 Functional.Maybe 庫(kù)   247
12.4 CsharpFunctionalExtensions 庫(kù)       249
12.4.1 Maybe 單子   249
12.4.2 Result         250
12.4.3 Fluent Assertions          251
12.4.4 CSharpFunctionalExtensions 小結(jié)       251
12.5 F# 編程語(yǔ)言        252
12.6 小結(jié)      252
第 13 章 火星之旅        253
13.1 故事      253
13.2 技術(shù)細(xì)節(jié)  254
13.3 創(chuàng)建游戲  256
13.3.1 解決方案       256
13.3.2 通信       257
13.3.3 玩法說(shuō)明       258
13.3.4 設(shè)置物品欄   259
13.3.5 游戲循環(huán)       267
13.4 小結(jié)      280
第 14 章 結(jié)語(yǔ)        283
14.1 讀到這里,你的感受如何    283
14.2 接下來(lái)走向何方     284
14.2.1 更多的函數(shù)式 C# 語(yǔ)言   284
14.2.2 學(xué)習(xí) F#      285
14.2.3 純函數(shù)式編程語(yǔ)言      285
14.3 那我呢      286

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)