內容提要
《JavaScript ES6函式式編程入門經典》使用JavaScript ES6帶你學習函式式 編程。將學習柯里化、偏函式、高階函式以及Monad等概念。
章節目錄
第1章 函式式編程簡介1
1.1什麼是函式式編程?為何它重要1
1.2引用透明性4
1.3命令式、聲明式與抽象5
1.4函式式編程的好處7
1.5純函式7
1.5.1純函式產生可測試的代碼7
1.5.2合理的代碼9
1.6並發代碼10
1.7可快取11
1.8管道與組合12
1.9純函式是數學函式13
1.10我們要構建什麼15
1.11JavaScript是函式式程式語言嗎15
1.12小結16
第2章JavaScript函式基礎17
2.1ECMAScript歷史18
2.2創建並執行函式19
2.2.1第一個函式19
2.2.2嚴格模式21
2.2.3return語句是可選的22
2.2.4多語句函式22
2.2.5函式參數24
2.2.6ES5函式在ES6中是有效的24
2.3設定項目24
2.3.1初始設定24
2.3.2用第一個函式式方法處理循環問題26
2.3.3export要點28
2.3.4import要點28
2.3.5使用babel-node運行代碼29
2.3.6在npm中創建腳本30
2.3.7從git上運行原始碼31
2.4小結31
第3章高階函式33
3.1理解數據34
3.1.1理解JavaScript數據類型34
3.1.2存儲函式35
3.1.3傳遞函式35
3.1.4返回函式37
3.2抽象和高階函式38
3.2.1抽象的定義38
3.2.2通過高階函式實現抽象39
3.3真實的高階函式42
3.3.1every函式42
3.3.2some函式44
3.3.3sort函式44
3.4小結48
第4章閉包與高階函式49
4.1.3回顧sortBy函式53
4.2真實的高階函式(續)54
4.2.1tap函式54
4.2.2unary函式56
4.2.3once函式57
4.2.4memoized函式58
4.3小結60
第5章數組的函式式編程61
5.1數組的函式式方法62
5.1.1map62
5.1.2filter65
5.2連線操作67
5.3reduce函式71
5.4zip數組77
5.5小結81
第6章柯里化與偏套用83
6.1一些術語84
6.1.1一元函式84
6.1.2二元函式84
6.1.3變參函式84
6.2柯里化86
6.2.1柯里化用例87
6.2.2日誌函式——套用柯里化89
6.2.3回顧curry90
6.2.4回顧日誌函式93
6.3柯里化實戰94
6.3.1在數組內容中查找數字94
6.3.2求數組的平方95
6.4數據流96
6.4.1偏套用96
6.4.2實現偏函式97
6.4.3柯里化與偏套用99
6.5小結100
第7章組合與管道101
7.1組合的概念102
7.2函式式組合104
7.2.1回顧map與filter104
7.2.2compose函式106
7.3套用compose函式106
7.3.1引入curry與partial108
7.3.2組合多個函式111
7.4管道/序列113
7.5組合的優勢114
7.5.1組合滿足結合律114
7.5.2使用tap函式調試115
7.6小結116
第8章函子117
8.1什麼是函子118
8.1.1函子是容器118
8.1.2函子實現了map方法120
8.2MayBe函子121
8.2.1實現MayBe函子122
8.2.2簡單用例123
8.2.3真實用例125
8.3Either函子129
8.3.1實現Either函子130
8.3.2reddit例子的Either版本131
8.4Pointed函子134
8.5小結134
第9章深入理解Monad135
9.1根據搜尋詞條獲取Reddit評論136
9.2問題描述136
9.2.1實現第一步138
9.2.2合併Reddit調用141
9.2.3多個map的問題144
9.3通過join解決問題146
9.3.1實現join146
9.3.2實現chain148
9.4小結151
第10章使用Generator153
10.1異步代碼及其問題154
10.2Generator基礎156
10.2.1創建Generator156
10.2.2Generator的注意事項157
10.2.3yield關鍵字158
10.2.4done屬性160
10.2.5向Generator傳遞數據162
10.3使用Generator處理異步調用164
10.3.1一個簡單的案例164
10.3.2一個真實的案例169
10.4小結172
附錄173