《Haskell函数式编程入门》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:张淞编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2014
  • ISBN:9787115338013
  • 页数:360 页
图书介绍:这是一本讲解纯函数式编程语言Haskell的书,同时也是一本通过Haskell来讲解函数式编程的方法与思想的书。全书共分三个部分。第一部分介绍函数式编程在解决数学与算法问题的精简与直观的特色,让不熟悉Haskell的读者对其建立初步的了解;第二部分介绍一些略微深入的Haskell内容,包括函子、Monoid、IO与Monad转换器等;最后一部分则涉及快速测试、惰性求值和并行编程等主题。

第1章Haskell简介 1

1.1 Haskell的由来 1

1.2 Haskell编译器的安装以及编写环境 3

1.3 GHCi的使用 4

1.3.1 GHCi中的命令 5

1.3.2在GHCi中调用函数 5

1.4 .hs和.lhs文件、注释与库函数 7

1.5第一个Haskell程序HelloWorld! 7

本章小结 8

第2章 类型系统和函数 9

2.1 Haskell的类型与数据 9

2.1.1 Haskell常用数据类型 9

2.1.2函数类型 14

2.1.3类型的别名 17

2.1.4类型的重要性 18

2.2 Haskell中的类型类 19

2.2.1相等类型类.Eq 20

2.2.2有序类型类.Ord 20

2.2.3枚举类型类.Emum 21

2.2.4有界类型类.Bounded 21

2.2.5数字类型类.Num 22

2.2.6可显示类型类.Show 25

2.2.7小结 25

2.3 Haskell中的函数 26

2.3.1 Haskell中的值 26

2.3.2函数思想入门 27

2.3.3函数的基本定义格式 28

2.3.4 λ表达式 30

2.3.5参数的绑定 34

2.4 Haskell中的表达式 35

2.4.1条件表达式 35

2.4.2情况分析表达式 36

2.4.3守卫表达式 37

2.4.4模式匹配 37

2.4.5运算符与函数 38

2.4.6运算符与自定义运算符 38

本章小结 41

第3章 基于布尔值的函数 42

3.1关键字module与import简介 42

3.2简易布尔值的函数 43

3.3与非门和或非门 46

本章小结 47

第4章 库函数及其应用 48

4.1预加载库函数 48

4.1.1常用函数 48

4.1.2基于列表的函数 50

4.1.3定义历法公式 57

4.1.4字符串处理的函数 58

4.2字符与位函数库简介 60

4.2.1 Data.Char 60

4.2.2 Data.Bits 60

本章小结 61

第5章 递归函数 62

5.1递归函数的概念 62

5.2简单递归函数 64

5.3扩展递归与尾递归 66

5.4互调递归 68

5.5麦卡锡的91函数 69

5.6斐波那契数列 69

5.7十进制数字转成罗马数字 73

5.8二分法查找 74

5.9汉诺塔 75

5.10排序算法 78

5.10.1插入排序 78

5.10.2冒泡排序 81

5.10.3选择排序 83

5.10.4快速排序 84

5.10.5归并排序 86

小结 91

5.11递归基本条件与程序终止 91

5.12递归与不动点 92

5.13无基本条件递归和惰性求值 94

本章小结 96

第6章 列表内包 97

6.1列表生成器 97

6.2素数相关趣题 99

6.3凯撒加密 101

6.3.1加密 102

6.3.2解密 102

6.4排列与组合问题 104

6.4.1排列问题 104

6.4.2错位排列问题 105

6.4.3组合问题 106

6.5八皇后问题 107

6.6计算矩阵乘法 111

6.7最短路径算法与矩阵乘法 112

本章小结 116

第7章 高阶函数与复合函数 117

7.1简单高阶函数 117

7.2折叠函数foldr与foldr 119

7.3 mapAccum?与mapAccumR函数 125

7.4复合函数 126

本章小结 128

第8章 定义数据类型 129

8.1数据类型的定义 129

8.1.1枚举类型 129

8.1.2构造类型 132

8.1.3参数化类型 134

8.1.4递归类型 138

8.1.5杂合定义类型 140

8.2类型的同构 142

8.3使用newtype定义类型 146

8.4数学归纳法的有效性 148

8.5树 150

8.6卡特兰数问题 151

8.7霍夫曼编码 152

8.8解24点 154

8.9 zipper 157

8.10一般化的代数数据类型 159

8.11类型的kind 162

8.11.1类型的kind 162

8.11.2空类型的声明 164

本章小结 165

第9章 定义类型类 166

9.1定义类型类 166

9.2 Haskell中常见类型类 169

9.2.1常用类型类 169

9.2.2 Functor 171

9.2.3 App工icative 173

9.2.4 Alternative 177

9.2.5简易字符识别器 179

9.2.6 Read类型类 182

9.2.7单位半群(Monoid ) 182

9.2.8 Foldable与Monoid类型类 184

9.2.9小结 186

9.3类型类中的类型依赖 187

9.4类型类中的关联类型 192

9.5定长列表 193

9.6运行时重载 197

9.7 Existential类型 198

本章小结 199

第10章Monad初步 201

10.1 Monad简介 201

10.2从工dentity Monad开始 204

10.3 Maybe Monad 206

10.4 Monad定律 209

10.5列表Monad 210

10.6 Monad相关运算符 210

10.7 MonadPlus 211

10.8 Functor、 Applicative与Monad的关系 213

本章小结 215

第11章 系统编程及输入/输出 216

11.1不纯函数与副作用 216

11.2工O Monad 218

11.3输入/输出处理 222

11.3.1 Control.Monad中的函数 222

11.3.2系统环境变量与命令行参数 224

11.3.3数据的读写 225

11.3.4格式化输出printf函数 228

11.3.5 printf函数的简易实现 229

11.4星际译王词典 233

11.4.1二分法查找 234

11.4.2散列表的使用 237

11.5简易异常处理 239

11.6 Haskell中的时间 244

本章小结 245

第12章 记录器Monad、读取器Monad、状态Monad 246

12.1记录器Monad 246

12.1.1 MonadWriter 248

12.1.2记录归并排序过程 249

12.2读取器Monad 250

12.2.1 MonadReader 251

12.2.2变量环境的引用 252

12.3状态Monad 253

12.3.1状态Monad标签器 254

12.3.2用状态Monad实现栈结构 255

12.3.3状态Monad、 FunApp单位半群和读取器Monad的关系 257

12 3.4 MonadState 258

12.3.5基于栈的计算器 258

12.4随机数的生成 270

本章小结 271

第13章Monad转换器 273

13.1从工dentityT Monad转换器开始 273

13.2 Monad转换器组合与复合 Monad的区别 276

13.3 Monad转换器的组合顺序 278

13.4 lift与lift工O 281

13.5简易Monad编译器 282

13.6语法分析器Monad组合子 286

13.6.1简易语法分析器的实现 287

13.6.2 Parsec库简介 291

13.6.3上下文无关文法 296

13.6.4基于语法分析器的计算器 300

本章小结 304

第14章QuickCheck简介 305

14.1测试函数属性 305

14.2测试数据生成器 308

本章小结 310

第15章 惰性求值简介 311

15.1 λ演算简介 311

15.2⊥Bottom 313

15.3表达式形态和thunk 314

15.3.1 WHNF.HNF与NF 314

15.3.2 thunk与严格求值 315

15.4求值策略 319

15.4.1引值调用 319

15.4.2按名调用 320

15.4.3常序求值 320

15.5惰性求值 321

15.6严格模式匹配与惰性模式匹配 322

第16章 并行与并发编程 324

16.1确定性的并行计算 325

16.2轻量级线程 333

16.2.1调度的不确定性 333

16.2.2基本线程通信 334

16.2.3信道 337

16.2.4简易聊天服务器 337

16.3软件事务内存 341

16.3.1软件事务内存简介 341

16.3.2软件事务内存的使用 343

16.3.3哲学家就餐问题 347

16.3.4圣诞老人问题 350

16.4异步并发库简介 355

本章小结 357

参考文献 358

后记 359