前端函式式攻城指南

前端函式式攻城指南

《前端函式式攻城指南》是2016年10月1日電子工業出版社出版的圖書,作者是歐陽繼超。

基本介紹

  • 書名:前端函式式攻城指南
  • 作者:歐陽繼超
  • ISBN:9787121297243
  • 頁數:192
  • 定價:59
  • 出版社:電子工業出版社
  • 出版時間:2016年10月1日
  • 裝幀:平裝
內容簡介,目錄,

內容簡介

在後端,函式式語言層出不窮。在前端,函式式最後的邊界也已經被漸漸打破。Scala的Scala.js、Clojure的ClojureScript都試圖同構移向前端。然而,原生JavaScript其實也可以通過豐富的庫讓前端的函式式編程一樣的舒適和優雅。
《前端函式式攻城指南》涵蓋了大部分函式式編程思想,包括JavaScript的函式式支持,Clojure風格的集合、遞歸、函式組合、宏、模式匹配、實用的Monads,以及前端的並發編程。
《前端函式式攻城指南》適合想要了解函式式編程的JavaScript程式設計師或者想學習JavaScript的函式式程式設計師閱讀。

目錄

第1章 函式式JavaScript 1
1.1 JavaScript也是函式式語言嗎 1
1.1.1 編程範式 1
1.1.2 JavaScript的函式式支持 3
1.2 作為函式式語言,JavaScript還差些什麼 10
1.2.1 不可變數據結構 11
1.2.2 惰性求值 11
1.2.3 函式組合 12
1.2.4 尾遞歸最佳化 13
1.3 Underscore你錯了 14
1.3.1 跟大家都不一樣的 map 函式 14
1.3.2 ClojureScript 16
1.3.3 Mori 17
1.4 小結 18
第2章 集合 19
2.1 集合的使用 20
2.1.1 向量(vector) 20
2.1.2 Map 23
2.1.3 函式組合子 24
2.2 持久性數據結構 27
2.2.1 向量的持久性數據結構 28
2.2.2 最後一片葉子不完整 31
2.2.3 所有葉子完整且葉子個數不大於完全樹的葉子個數 32
2.2.4 所有葉子完整且葉子個數大於完全樹的葉子個數 34
2.3 不可變性 35
2.3.1 致命魔術 36
2.3.2 引用透明性 38
2.3.3 函式式React 40
2.3.4 執行緒不安全 42
2.4 惰性序列 44
2.4.1 改良奧利奧吃法 44
2.4.2 惰性求值與及早求值 46
2.4.3 惰性求值的實現 48
2.5 小結 50
第3章 遞歸 51
3.1 不可變性與遞歸 51
3.1.1 真的需要循環嗎 52
3.1.2 遞歸還是循環 54
3.2 柯里悖論 55
3.2.1 Y組合子 57
3.2.2 棧是多么容易爆 60
3.3 尾遞歸最佳化 62
3.4 蹦跳樂園(Trampoline) 64
3.4.1 有窮狀態機(DFA) 65
3.4.2 Trampoline 67
3.5 小結 69
第4章 函式組合 70
4.1 Underscore到底做錯了什麼 70
4.1.1 自由(Free)變數與約束(Bound)變數 72
4.1.2 閉包 74
4.2 柯里化有什麼用 75
4.3 Transducer 78
4.3.1 Reducer 79
4.3.2 來看看更好更快的解法 79
4.3.3 Reducer 80
4.3.4 Reducible 81
4.3.5 Transducer詳解 82
4.3.6 跟柯里化有什麼區別 83
4.4 組合與管道 84
4.4.1 管道(Pipeline) 84
4.4.2 組合與管道 86
4.4.3 管道函式 87
4.5 小結 87
第5章 Macro宏 89
5.1 什麼是REPL 89
5.1.1 宏擴展器(Macro Expander) 90
5.1.2 那么前端怎么辦 92
5.2 為什麼要語法糖 93
5.2.1 只是為了語法漂亮嗎 94
5.3 Sweet.js 94
5.3.1 Rule Macro 95
5.3.2 Case Macro 97
5.4 Infix Macro 和 Operator 104
5.4.1 Infix Macro 104
5.4.2 自定義操作符 105
5.5 小結 106
第6章 模式匹配 107
6.1 Destructure 107
6.1.1 對象 109
6.1.2 數組 109
6.1.3 函式 109
6.2 Arity 函式 110
6.3 Fizz Buzz 111
6.3.1 字面匹配(Literal Matching) 111
6.3.2 綁定 113
6.3.3 Vector與Map匹配 113
6.3.4 Guard 114
6.3.5 Sparkler 114
6.4 代數數據類型(ADT) 116
6.5 小結 118
第7章 Monadic編程 119
7.1 鏈式調用 119
7.1.1 Promise 120
7.1.2 高階Promise 122
7.2 Monad 123
7.2.1 函子(Functor) 123
7.2.2 Applicative Functor 126
7.2.3 含么半群(Monoid) 130
7.2.4 Monad就是容器界的管道 132
7.2.5 Monad就是自函子範疇上的一個么半群 136
7.3 走鋼絲 139
7.3.1 用Monad表示薛丁格貓 139
7.3.2 皮爾斯走鋼絲 140
7.4 Monad在JavaScript中的套用 143
7.4.1 Promise版本的走鋼絲 144
7.4.2 When 144
7.5 Reactive編程 146
7.5.1 流(Stream) 146
7.5.2 Functor 147
7.5.3 Applicative 147
7.5.4 Monad 148
7.5.5 一個“簡單”的Reactive實例 149
7.6 小結 153
第8章 並發編程 154
8.1 什麼是並發 154
8.1.1 異步與多執行緒 155
8.1.2 JavaScript的並發模型 157
8.2 通信順序進程(CSP) 160
8.3 使用Generator實現CSP 162
8.3.1 Generator 163
8.3.2 Go Block 163
8.3.3 timeout 164
8.3.4 take <! 165
8.3.5 put >! 165
8.3.6 JavaScript CSP版本的例子 166
8.4 實戰 CSP 168
8.4.1 使用移植的core.async 168
8.4.2 使用ES7中的異步函式 169
8.4.3 try catch 170
8.5 小結 173
參考資料 174

相關詞條

熱門詞條

聯絡我們