JavaScript函式式編程

《JavaScript函式式編程》是2015年8月人民郵電出版社出版的圖書,作者是佛格斯(美) 。

基本介紹

  • 書名:JavaScript函式式編程
  • 作者:佛格斯
  • 原版名稱:JavaScript functional programming
  • 出版社:人民郵電出版社
  • 出版時間:2015年8月
圖書信息,圖書簡介,目錄,

圖書信息

作者[美] Michael Fogus 佛格斯
ISBN978-7-115-39060-8
日期2015年8月

圖書簡介

全書共9章,分別介紹了JavaScript函式式編程、一等函式與Applicative編程、變數的作用域和閉包、高階函式、由函式構建函式、遞歸、純度和不變性以及更改政策、基於流的編程、無類編程。除此之外,附錄中還介紹了更多函式式JavaScript。

目錄

第 1章 JavaScript函式式編程簡介 1
1.1 JavaScript案例 1
1.2 開始函式式編程 4
1.2.1 為什麼函式式編程很重要 4
1.2.2 以函式為抽象單元 7
1.2.3 封裝和隱藏 9
1.2.4 以函式為行為單位 10
1.2.5 數據抽象 14
1.2.6 函式式JavaScript初試 17
1.2.7 加速 19
1.3 Underscore示例 22
1.4 總結 23
第 2章 一等函式與Applicative編程 24
2.1 函式是一等公民 24
2.2 Applicative編程 30
2.2.1 集合中心編程 31
2.2.2 Applicative編程的其他實例 32
2.2.3 定義幾個Applicative函式 35
2.3 數據思考 36
2.4 總結 43
第3章 變數的作用域和閉包 44
3.1 全局作用域 44
3.2 詞法作用域 46
3.3 動態作用域 47
3.4 函式作用域 51
3.5 閉包 52
3.5.1 模擬閉包 53
3.5.2 使用閉包 57
3.5.3 閉包的抽象 59
3.6 總結 60
第4章 高階函式 62
4.1 以其他函式為參數的函式 62
4.1.1 關於傳遞函式的思考:max、finder和best 63
4.1.2 關於傳遞函式的更多思考:重複、反覆和條件疊代
(iterateUntil) 65
4.2 返回其他函式的函式 67
4.2.1 高階函式捕獲參數 69
4.2.2 捕獲變數的好處 69
4.2.3 防止不存在的函式:fnull 72
4.3 整合:對象校驗器 74
4.4 總結 77
第5章 由函式構建函式 78
5.1 函式式組合的精華 78
5.2 柯里化(Currying) 83
5.2.1 向右柯里化,還是向左 84
5.2.2 自動柯里化參數 85
5.2.3 柯里化流利的API 88
5.2.4 JavaScript柯里化的缺點 89
5.3 部分套用 89
5.3.1 部分套用一個和兩個已知的參數 91
5.3.2 部分套用任意數量的參數 92
5.3.3 局部套用實戰:前置條件 93
5.4 通過組合端到端的拼接函式 96
5.5 總結 98
第6章 遞歸 100
6.1 自吸收(self-absorbed)函式(調用自己的函式) 100
6.1.1 用遞歸遍歷圖 105
6.1.2 深度優先自遞歸搜尋 106
6.1.3 遞歸和組合函式:Conjoin和Disjoin 108
6.2 相互關聯函式(函式調用其他會再調用回它的函式) 110
6.2.1 使用遞歸深克隆 111
6.2.2 遍歷嵌套數組 112
6.3 太多遞歸了 114
6.3.1 生成器 117
6.3.2 蹦床原理以及回調 120
6.4 遞歸是一個底層操作 121
6.5 總結 122
第7章 純度、不變性和更改政策 123
7.1 純度 123
7.1.1 純度和測試之間的關係 124
7.1.2 提取純函式 125
7.1.3 測試不純函式的屬性 126
7.1.4 純度與引用透明度的關係 127
7.1.5 純度和冪等性 129
7.2 不變性 130
7.2.1 如果一棵樹倒在樹林裡,有沒有聲音? 132
7.2.2 不變性與遞歸 133
7.2.3 凍結和克隆 134
7.2.4 在函式級別上觀察不變性 136
7.2.5 觀察對象的不變性 137
7.2.6 對象往往是一個低級別的操作 140
7.3 控制變化的政策 141
7.4 總結 144
第8章 基於流的編程 145
8.1 連結 145
8.1.1 惰性鏈 148
8.1.2 Promises 152
8.2 管道 154
8.3 數據流與控制流 158
8.3.1 找個一般的形狀 161
8.3.2 函式可以簡化創建action 164
8.4 總結 166
第9章 無類編程 167
9.1 數據導向 167
9.2 Mixins 173
9.2.1 修改核心原型 175
9.2.2 類層次結構 176
9.2.3 改變層級結構 179
9.2.4 用Mixin扁平化層級結構 180
9.2.5 通過Mixin擴展新的語義 185
9.2.6 通過Mixin混合出新的類型 187
9.2.7 方法是低級別操作 188
9.3 }).call(“Finis”); 190
附錄A 更多函式式JavaScript 191
A.1 JavaScript的函式式庫 191
A.1.1 函式式JavaScript 191
A.1.2 Underscore-contrib 192
A.1.3 RxJS 192
A.1.4 Bilby 194
A.1.5 allong.es 195
A.1.6 其他函式式庫 196
A.2 能編譯成JavaScript的函式式語言 196
A.2.1 ClojureScript 196
A.2.2 CoffeeScript 197
A.2.3 Roy 198
A.2.4 Elm 198

相關詞條

熱門詞條

聯絡我們