C#函式式程式設計

C#函式式程式設計

《C#函式式程式設計》,是清華大學出版社2013年出版的圖書,作者是斯圖姆。

基本介紹

  • 中文名:C#函式式程式設計
  • 作者:(英)斯圖姆(Sturm, O.)
  • 原作品:Functional Programming in C#:Classic Programming Techniques for Modern Projects
  • 出版社:清華大學出版社
  • 出版時間:2013年1月
  • 頁數:254 頁
  • 定價:45 元
  • 裝幀:平裝
  • ISBN:9787302302346
  • 副標題:經典編程技術在現代項目中的套用
內容介紹,作者介紹,作品目錄,

內容介紹

函式式設計是一種重要的程式設計模式,它可以追溯到很久之前。函式式程式設計總是與教授程式設計的人們有關.函式式程式設計的整潔而富有邏輯的概念是它特別適合於教學的重要原因。廣泛使用計算機和自己設計程式的行業也發現函式式程式設計是實現其目標最有效的辦法。然而,在許多所謂的“主流”軟體公司看來,函式式程式設計一直以來只具有學術研究價值,他們普遍選擇傳統的指令式設計方法,如面向對象等。
最近幾年,在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.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中的Map、Filter
和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

相關詞條

熱門詞條

聯絡我們