深入C#函數式編程

[英] 西蒙·J.潘特(Simon J. Painter)著 周子衿 譯

  • 出版商: 清華大學
  • 出版日期: 2025-03-01
  • 定價: $714
  • 售價: 8.5$607
  • 語言: 簡體中文
  • ISBN: 7302680159
  • ISBN-13: 9787302680154
  • 相關分類: C#
  • 已絕版

  • 深入C#函數式編程-preview-1
  • 深入C#函數式編程-preview-2
  • 深入C#函數式編程-preview-3
深入C#函數式編程-preview-1

相關主題

商品描述

"《深入C#函數式編程》闡述了函數式編程的歷史背景、基本概念和實踐,展示瞭如何借助於 C# 語言和函數式編程來增強代碼的可讀性和可維護性以及提高代碼的質量。書中還探討了 C# 語言中非傳統結構的使用方法以及如何通過函數式編程重構現有的代碼。此外,本書還通過豐富的案例分析了在實際業務場景中應用 C# 函數式編程能帶來哪些實際的好處。 通過本書的閱讀,廣大 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