网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 Haskell函数式编程入门
分类
作者 张淞
出版社 人民邮电出版社
下载
简介
编辑推荐

张淞编著的《Haskell函数式编程入门》通过Haskell这样一门语法经过精心设计和锤炼的纯函数式编程语言来讲解函数式编程的方法与思想。虽然很多例子都是解决数学与算法问题的,但也有一些例子是对Haskell在实际当中应用的展示,旨在说明函数式编程语言不单单是另外一种编程方式或者只是在教学与研究中使用的语言,同时也是一门可以解决现实编程问题的、非常务实的编程语言。Haskell实现了很多软件中的精品,如窗口管理器XMonad、Perl 6的Haskell实现Pugs以及高性能的网页框架Yesod、Snap等。

内容推荐

张淞编著的《Haskell函数式编程入门》是一本讲解Haskell这门经过精心设计和锤炼的纯函数式编程语言的书,同时也是一本通过Haskell来讲解函数式编程的方法与思想的书。全书共分三个部分。第一部分介绍函数式编程在解决数学与算法问题的精简与直观的特色,让不熟悉Haskell的读者对其建立初步的了解,同时通过解决一些算法问题,如裴波那契数列、八皇后问题、排序问题、24点等,引发一些对函数式编程方式的思考;第二部分介绍一些略微深入的Haskell内容,包括函子、Monoid、IO与Monad转换器等;最后一部分则涉及快速测试、惰性求值和并行编程等主题。

《Haskell函数式编程入门》既适合对Hasell和函数式编程感兴趣的程序员阅读,又适合作为Haskell语言入门教程,供计算机科学与数学专业的学生参考。

目录

第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与foldl 119

7.3 mapAccumL与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 Applicative 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 从Identity 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 IO 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 从IdentityT Monad转换器开始 273

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

13.3 Monad转换器的组合顺序 278

13.4 lift与liftIO 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

随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/4/3 12:59:04