本書通過Haskell語言介紹函數(shù)式程序設(shè)計(jì)的基本思想和方法,講解如何將數(shù)學(xué)思維應(yīng)用于程序設(shè)計(jì)問題,以實(shí)現(xiàn)更高效的計(jì)算。本書涵蓋Haskell的諸多特性,但并不是這門語言的參考指南,而是旨在利用豐富的實(shí)例和練習(xí)揭示函數(shù)式程序設(shè)計(jì)的本質(zhì)。本書不要求讀者具備程序設(shè)計(jì)基礎(chǔ),所涉及的數(shù)學(xué)知識也并不高深,既適合初學(xué)者閱讀,也適合有經(jīng)驗(yàn)的程序員參考。
理查德·伯德(Richard Bird)牛漳大學(xué)計(jì)算機(jī)實(shí)驗(yàn)室的榮譽(yù)退休教授,牛津大學(xué)林肯學(xué)院的研究員。他的著述頗豐,包括《Algebra of Programming》(Prentice Hall,1996)和《Pearls Of Functional ALgorithm Design》(Cambridge University Press,2010)。
出版者的話
譯者序
前言
第1章 何謂函數(shù)式程序設(shè)計(jì)1
1.1 函數(shù)和類型1
1.2 函數(shù)復(fù)合2
1.3 例子:高頻詞2
1.4 例子:數(shù)字轉(zhuǎn)換為詞5
1.5 Haskell平臺8
1.6 習(xí)題9
1.7 答案11
1.8 注記13
第2章 表達(dá)式、類型和值15
2.1 GHCi會話15
2.2 名稱和運(yùn)算符17
2.3 求值18
2.4 類型和類族20
2.5 打印值22
2.6 模塊24
2.7 Haskell版面24
2.8 習(xí)題25
2.9 答案29
2.10 注記32
第3章 數(shù)33
3.1 類族Num33
3.2 其他數(shù)值類族33
3.3 取底函數(shù)的計(jì)算35
3.4 自然數(shù)37
3.5 習(xí)題39
3.6 答案40
3.7 注記41
第4章 列表42
4.1 列表記法42
4.2 枚舉43
4.3 列表概括43
4.4 一些基本運(yùn)算45
4.5 串聯(lián)46
4.6 函數(shù)cancat、map和filter46
4.7 函數(shù)zip和zipWith49
4.8 高頻詞的完整解50
4.9 習(xí)題52
4.10 答案55
4.11 注記58
第5章 一個(gè)簡單的數(shù)獨(dú)求解器59
5.1 問題說明59
5.2 合法程序的構(gòu)造63
5.3 修剪選擇矩陣64
5.4 格子的擴(kuò)展67
5.5 習(xí)題70
5.6 答案71
5.7 注記72
第6章 證明73
6.1 自然數(shù)上的歸納法73
6.2 列表歸納法74
6.3 函數(shù)foldr78
6.4 函數(shù)foldl81
6.5 函數(shù)scanl83
6.6 最大連續(xù)段和問題84
6.7 習(xí)題87
6.8 答案90
6.9 注記96第7章 效率97 7.1 惰性求值97
7.2 空間的控制100
7.3 運(yùn)行時(shí)間的控制103
7.4 時(shí)間分析104
7.5 累積參數(shù)106
7.6 元組109
7.7 排序112
7.8 習(xí)題115
7.9 答案117
7.10 注記120
第8章 精美打印121
8.1 問題背景121
8.2 文檔122
8.3 一種直接實(shí)現(xiàn)125
8.4 例子126
8.5 最佳格式128
8.6 項(xiàng)表示129
8.7 習(xí)題133
8.8 答案135
8.9 注記139
第9章 無窮列表140
9.1 復(fù)習(xí)140
9.2 循環(huán)列表141
9.3 作為極限的無窮列表143
9.4 石頭剪刀布147
9.5 基于流的交互151
9.6 雙向鏈表152
9.7 習(xí)題154
9.8 答案156
9.9 注記158
第10章 命令式函數(shù)式程序設(shè)計(jì)159
10.1 IO單子159
10.2 更多的單子162
10.3 狀態(tài)單子165
10.4 ST單子167
10.5 可變數(shù)組169
10.6 不變數(shù)組173
10.7 習(xí)題175
10.8 答案178
10.9 注記183
第11章 句法分析184
11.1 單子句法分析器184
11.2 基本分析器186
11.3 選擇與重復(fù)187
11.4 語法與表達(dá)式190
11.5 顯示表達(dá)式192
11.6 習(xí)題194
11.7 答案196
11.8 注記198
第12章 一個(gè)簡單的等式計(jì)算器199
12.1 基本思想199
12.2 表達(dá)式203
12.3 定律206
12.4 計(jì)算208
12.5 重寫210
12.6 匹配211
12.7 代換213
12.8 測試計(jì)算器214
12.9 習(xí)題221
12.10 答案222
12.11 注記224
索引225