內容介紹
函式式設計是一種重要的程式設計模式,它可以追溯到很久之前。函式式程式設計總是與教授程式設計的人們有關.函式式程式設計的整潔而富有邏輯的概念是它特別適合於教學的重要原因。廣泛使用計算機和自己設計程式的行業也發現函式式程式設計是實現其目標最有效的辦法。然而,在許多所謂的“主流”軟體公司看來,函式式程式設計一直以來只具有學術研究價值,他們普遍選擇傳統的指令式設計方法,如面向對象等。
最近幾年,在NET平台上把越來越多的函式式成分增加到指令式語言中。在VisualStudio2010中增加了F#語言,它是用微軟主流開發平台開發的第一個混合的函式式語言。甚至有更多的函式式功能被引入到C#和VBNET中,這說明了微軟公司對函式式設計的認同。
作者介紹
Oliver Sturm有20多年的專業軟體開發經驗。他是應用程式體系結構、程式設計語言和DevExpress開發的第三方.NET工具等多個領域的專家。自2002年開始,他的主要興趣在於.NET平台。Oliver曾在許多國際會議上發表過演說,編寫了20多個培訓課程,並在雜誌上用英語和德語發表了100多篇文章。他也曾從事計算機基礎編程教學15年之久。由於他對.NET社區所做的貢獻,因此多次獲得微軟英國最佳C#程式設計師稱號。以蘇格蘭為據點,Oliver主要從事自由諮詢師和培訓師的工作,同時還是國際諮詢公司thinktecture的顧問。
作品目錄
目 錄
第Ⅰ部分 函式式程式設計引言
第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.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
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