注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件工程及軟件方法學(xué)前端函數(shù)式攻城指南

前端函數(shù)式攻城指南

前端函數(shù)式攻城指南

定 價(jià):¥59.00

作 者: 歐陽(yáng)繼超
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 計(jì)算機(jī)?網(wǎng)絡(luò) 軟件工程及軟件方法學(xué)

ISBN: 9787121297243 出版時(shí)間: 2016-09-01 包裝:
開本: 16開 頁(yè)數(shù): 192 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  在后端,函數(shù)式語言層出不窮。在前端,函數(shù)式最后的邊界也已經(jīng)被漸漸打破。Scala的Scala.js、Clojure的ClojureScript都試圖同構(gòu)移向前端。然而,原生JavaScript其實(shí)也可以通過豐富的庫(kù)讓前端的函數(shù)式編程一樣的舒適和優(yōu)雅。本書涵蓋了大部分函數(shù)式編程思想,包括JavaScript的函數(shù)式支持,Clojure風(fēng)格的集合、遞歸、函數(shù)組合、宏、模式匹配、實(shí)用的Monads,以及前端的并發(fā)編程。本書適合想要了解函數(shù)式編程的JavaScript程序員或者想學(xué)習(xí)JavaScript的函數(shù)式程序員閱讀。

作者簡(jiǎn)介

  歐陽(yáng)繼超,ThoughtWorks高級(jí)咨詢師,活躍開源貢獻(xiàn)者(github.com/jcouyang),熱愛編程與寫作,譯有《函數(shù)式JavaScript》以及若干開源書籍與文檔。

圖書目錄

第1章 函數(shù)式JavaScript 1
1.1 JavaScript也是函數(shù)式語言嗎 1
1.1.1 編程范式 1
1.1.2  JavaScript的函數(shù)式支持 3
1.2 作為函數(shù)式語言,JavaScript還差些什么 10
1.2.1  不可變數(shù)據(jù)結(jié)構(gòu) 11
1.2.2  惰性求值 11
1.2.3  函數(shù)組合 12
1.2.4  尾遞歸優(yōu)化 13
1.3  Underscore你錯(cuò)了 14
1.3.1  跟大家都不一樣的 map 函數(shù) 14
1.3.2 ClojureScript 16
1.3.3 Mori 17
1.4  小結(jié) 18
第2章 集合 19
2.1 集合的使用 20
2.1.1 向量(vector) 20
2.1.2 Map 23
2.1.3 函數(shù)組合子 24
2.2 持久性數(shù)據(jù)結(jié)構(gòu) 27
2.2.1 向量的持久性數(shù)據(jù)結(jié)構(gòu) 28
2.2.2 最后一片葉子不完整 31
2.2.3 所有葉子完整且葉子個(gè)數(shù)不大于完全樹的葉子個(gè)數(shù) 32
2.2.4 所有葉子完整且葉子個(gè)數(shù)大于完全樹的葉子個(gè)數(shù) 34
2.3 不可變性 35
2.3.1 致命魔術(shù) 36
2.3.2 引用透明性 38
2.3.3 函數(shù)式React 40
2.3.4 線程不安全 42
2.4 惰性序列 44
2.4.1 改良奧利奧吃法 44
2.4.2 惰性求值與及早求值 46
2.4.3 惰性求值的實(shí)現(xiàn) 48
2.5 小結(jié) 50
第3章 遞歸 51
3.1 不可變性與遞歸 51
3.1.1 真的需要循環(huán)嗎 52
3.1.2 遞歸還是循環(huán) 54
3.2 柯里悖論 55
3.2.1 Y組合子 57
3.2.2 棧是多么容易爆 60
3.3 尾遞歸優(yōu)化 62
3.4 蹦跳樂園(Trampoline) 64
3.4.1 有窮狀態(tài)機(jī)(DFA) 65
3.4.2 Trampoline 67
3.5 小結(jié) 69
第4章 函數(shù)組合 70
4.1 Underscore到底做錯(cuò)了什么 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 跟柯里化有什么區(qū)別 83
4.4 組合與管道 84
4.4.1 管道(Pipeline) 84
4.4.2 組合與管道 86
4.4.3 管道函數(shù) 87
4.5 小結(jié) 87
第5章 Macro宏 89
5.1 什么是REPL 89
5.1.1 宏擴(kuò)展器(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 小結(jié) 106
第6章 模式匹配 107
6.1 Destructure 107
6.1.1 對(duì)象 109
6.1.2 數(shù)組 109
6.1.3 函數(shù) 109
6.2 Arity 函數(shù) 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 代數(shù)數(shù)據(jù)類型(ADT) 116
6.5 小結(jié) 118
第7章 Monadic編程 119
7.1 鏈?zhǔn)秸{(diào)用 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就是自函子范疇上的一個(gè)幺半群 136
7.3 走鋼絲 139
7.3.1 用Monad表示薛定諤貓 139
7.3.2 皮爾斯走鋼絲 140
7.4 Monad在JavaScript中的應(yīng)用 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 一個(gè)“簡(jiǎn)單”的Reactive實(shí)例 149
7.6 小結(jié) 153
第8章 并發(fā)編程 154
8.1 什么是并發(fā) 154
8.1.1 異步與多線程 155
8.1.2 JavaScript的并發(fā)模型 157
8.2 通信順序進(jìn)程(CSP) 160
8.3 使用Generator實(shí)現(xiàn)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 實(shí)戰(zhàn) CSP 168
8.4.1 使用移植的core.a(chǎn)sync 168
8.4.2 使用ES7中的異步函數(shù) 169
8.4.3 try catch 170
8.5 小結(jié) 173
參考資料 174

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) hotzeplotz.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)