C# 函數式程序設計-經典編程技術在現代項目中的應用(Functional Programming in C#: Classic Programming Techniques for Modern Projects) C#函数式程序设计:经典编程技术在现代项目中的应用

斯圖姆 (Oliver Sturm)

  • 出版商: 清華大學
  • 出版日期: 2013-01-01
  • 定價: $270
  • 售價: 8.5$229
  • 語言: 簡體中文
  • 頁數: 254
  • 裝訂: 平裝
  • ISBN: 7302302340
  • ISBN-13: 9787302302346
  • 相關分類: C#

已絕版

買這商品的人也買了...

相關主題

商品描述

<內容簡介>

C#函數式程序設計——經典編程技術在現代項目中的應用》為C#程序設計提供了一個獨一無二的新方法——即利用函數式編程方法解決開發中的實際問題。作為C#語言的專家和微軟MVP,作者斯圖姆詳細介紹了C#重要的語言功能,論述了在C#里使用函數式方法的理論基礎和實踐過程。本書提供了眾多的不同類型實例,這些實例結合了多個方法解決不同領域里的問題,既包括了並行計算和高性能計算等複雜的問題,也包括了Web服務和商業邏輯實現等簡單的用例。《C#函數式程序設計——經典編程技術在現代項目中的應用》希望幫助程序員在C#語言里找到問題的解決方案,並向讀者介紹C#函數式編程的優點和缺點。本書的主要目的是幫助程序員最大限度地利用已知的程序設計技術。 <章節目錄>

部分  函數式程序設計引言
1  函數式程序設計簡史 / 3
1.1  
函數式程序設計簡介
/ 3
1.2  
函數式程序設計語言
/ 4
1.3  
與面向對象程序設計的關係
/ 7
1.4  
小結
/ 7
2  函數式程序設計思想在現代項目中的應用
/ 9
2.1  
控制副作用
/ 10
2.2  
敏捷開發方法
/ 11
2.3  
聲明式程序設計
/ 11
2.4  
函數式程序設計的定向思維
/ 11
2.5  
C#實現函數式程序設計的可行性
/ 12
2.6  
小結
/ 13
部分  C#函數式程序設計基礎第3  函數、委託和Lambda表達式 / 17
3.1  
函數與方法
/ 17
3.2  
重用函數
/ 19
3.3  
匿名函數與Lambda表達式
/ 22
3.4  
擴展方法
/ 25
3.5  
引用透明
/ 27
3.6  
小結
/ 29
4  泛型
/ 31
4.1  
泛型函數
/ 32
4.2  
泛型類
/ 33
4.3  
約束類型
/ 35
4.4  
其他泛型類型
/ 36
4.5  
協變與逆變
/ 38
4.6  
小結
/ 41
5  惰性列表工具迭代器
/ 43
5.1  
什麼是惰性
/ 43
5.2  
.NET方法枚舉元素
/ 44
5.3  
迭代器函數的實現
/ 47
5.4  
鏈式迭代器
/ 51
5.5  
小結
/ 53
6  用閉包封裝數據
/ 55
6.1  
動態創建函數
/ 55
6.2  
作用域存在的問題
/ 56
6.3  
閉包的工作機制
/ 56
6.4  
小結
/ 60
7  代碼即數據
/ 61
7.1  .NET
中的表達式樹
/ 62
7.2  
分析表達式
/ 63
7.3  
生成表達式
/ 68
7.4  .NET 4.0
特性
/ 71
7.5  
小結
/ 73
部分  C#實現常用的函數式設計技術第8  局部套用與部分應用 / 77
8.1  
參數的解耦
/ 77
8.1.1  
手動局部套用
/ 78
8.1.2  
自動局部套用
/ 79
8.1.3  
調用局部套用函數
/ 81
8.1.4  
類上下文
/ 81

8.1.5  FCSlib
庫的內容
/ 84
8.2  
調用函數的各部分
/ 86
8.3  
參數順序的重要性
/ 88
8.4  
小結
/ 89
9  惰性求值
/ 91
9.1  
惰性求值的優點
/ 92
9.2  
傳遞函數
/ 93
9.3  
顯式的惰性求值
/ 94
9.4  
惰性求值方法的比較
/ 98
9.4.1  
可用性
/ 98
9.4.2  
效率
/ 98
9.5  
惰性求值方法的選擇
/ 99
9.6  
小結
/ 99
10  緩存技術
/ 101
10.1  
記住以前結果的重要性
/ 101
10.2  
預計算
/ 102
10.3  
緩存
/ 107
10.3.1  
深度緩存
/ 110
10.3.2  
緩存的幾個考慮因素
/ 113
10.4  
小結
/ 114
11  遞歸調用
/ 115
11.1  C#
中的遞歸
/ 115
11.2  
尾遞歸
/ 117
11.3  
累加器傳遞模式
/ 119
11.4  
後繼傳遞模式
/ 120
11.5  
間接遞歸
/ 123
11.6  
小結
/ 126
12  標準高階函數
/ 127
12.1  
應用運算:
Map / 127
12.2  
使用篩選條件:
Filter / 128
12.3  
累加操作:
Fold / 129
12.4  LINQ
中的MapFilter
Fold / 134
12.5  
標準高階函數
/ 135
12.6  
小結
/ 136
13  序列
/ 137
13.1  
何為列表推導
/ 137
13.2  
用函數方法實現迭代器
/ 138
13.3  
值域
/ 139
13.4  
限制
/ 141
13.5  
小結
/ 143
14  由函數構建函數
/ 145
14.1  
組合函數
/ 145
14.2  
高級的部分應用
/ 148
14.3  
各種方法的綜合
/ 150
14.4  
小結
/ 154
15  可選值
/ 155
15.1  
空值的含義
/ 155
15.2  
可選值的實現
/ 156
15.3  
小結
/ 161
16  防止數據變化
/ 163

16.1  
變化不總是件好事
/ 163
16.2  
錯誤的假定
/ 164
16.2.1  
靜態數據受歡迎
/ 165
16.2.2  
深度問題
/ 166
16.2.3  
克隆
/ 167
16.2.4  
自動克隆
/ 168
16.3  
實現不可變容器數據類型
/ 172
16.3.1  
鏈表
/ 172
16.3.2  
隊列
/ 178
16.3.3  
非平衡的二叉樹
/ 180
16.3.4  
紅黑樹
/ 183
16.4  
持久數據類型的替代選擇
/ 185
16.5  
小結
/ 186
17  單子
/ 187
17.1  
類型類的概念
/ 188
17.2  
單子的概念
/ 191
17.3  
使用抽象的原因
/ 191
17.4  Logger
單子
/ 195
17.5  
含糖語法
/ 197
17.6  
SelectMany方法建立綁定
/ 197
17.7  
小結
/ 199
部分  函數式設計的實際應用
18  函數式程序設計技術的綜合應用 / 203
18.1  
重構
/ 204
18.1.1  
Windows Forms UI實現列表篩選
/ 204
18.1.2  Mandelbrot
分形計算
/ 210
18.2  
編寫新代碼
/ 217
18.2.1  
使用靜態方法
/ 217
18.2.2  
優先考慮匿名函數
/ 219
18.2.3  
優先考慮高階函數
/ 220
18.2.4  
優先考慮不可變量據
/ 221
18.2.5  
註意類中行為的實現
/ 222
18.3  
尋找可以替代函數式設計的其他方法
/ 222
18.3.1  
其他需要考慮的問題
/ 222
18.3.2  
使用已有代碼
/ 224
18.4  
小結
/ 225
19  MapReduce模式
/ 227
19.1  MapReduce
的實現
/ 228
19.2  
問題的抽象
/ 231
19.3  
小結
/ 233
20  函數模塊化思想的應用
/ 235
20.1  
在應用程序中執行SQL代碼
/ 235
20.2  
用部分應用和預計算重寫函數
/ 237
20.3  
小結
/ 239
21  函數式技術在現有項目中的應用
/ 241
21.1  .NET Framework / 241
21.2  LINQ / 243
21.2.1  LINQ to Objects / 243
21.2.2  LINQ
到查詢後台
/ 247
21.2.3  
並行化
/ 249

21.3  Google MapReduce
及其實現
/ 250
21.4  NUnit / 252
21.5  
小結
/ 254