书籍详情
OCaml语言编程基础教程
作者:陈钢,张静 著
出版社:人民邮电出版社
出版时间:2018-06-01
ISBN:9787115471215
定价:¥79.00
购买这本书可以去
内容简介
OCaml语言是一种函数式程序设计语言。本书重点介绍函数式编程的基础知识以及OCaml程序设计的技巧,同时兼顾应用软件开发的需求。全书共8章,前5章讲解OCaml语言的函数式控制结构、数据结构、模块化程序设计、命令式程序设计和图形程序设计;第6章介绍如何把OCaml移植到F#,第7章介绍通过C#开发的用户界面调用OCaml或F#程序,第8章介绍面向对象程序设计。本书适合想要学习OCaml程序语言或者想要学习函数式编程的读者阅读参考。
作者简介
陈钢航天科工集团三院304所国家千人计划专家,中国计算机学会会员。本科毕业于浙江大学数学,硕士毕业于北京大学计算机系,并在法国巴黎第七大学获得计算机博士学位。在OCaml语言和COQ定理证明器发源地受过专业训练,是国内初次开展COQ定理证明工作及其在集成电路中的应用的学者,曾在上海交大、南澳大学、波士顿大学、摩托罗拉公司工作。2013年加入航天科工集团三院304所,从事基于定理证明的AES加密算法验证与FPGA实现研究、缺陷分析软件评估研究和形式化飞行控制数学研究。2017年组织了计算机学会“形式化工程数学”研讨会。张静 东北大学计算机专业本科毕业。在北京京航计算通讯研究所工作期间,跟随陈钢老师学习OCaml和COQ,并从事程序缺陷分析软件的评估工作。目前在中石油新疆油田从事信息系统管理工作。
目录
第 1章 函数式控制结构 1
1.1 OCaml解释器 2
1.2 表达式和let定义 3
1.3 let局部定义 6
1.4 基本类型 8
1.4.1 整数类型int 9
1.4.2 浮点类型float 11
1.4.3 字符类型char 13
1.4.4 unit类型和简单输入输出 14
1.4.5 字符串类型string与
printf函数 15
1.4.6 bool类型和if表达式 18
1.5 乘积类型和模式匹配初步 21
1.6 函数和函数类型 23
1.6.1 简单函数 23
1.6.2 函数表达式 28
1.6.3 function和fun比较 30
1.6.4 高阶函数 31
1.6.5 递归函数 33
1.6.6 相互递归函数 36
1.6.7 模式匹配表达式 36
1.7 多态类型 40
1.7.1 类型变量 40
1.7.2 类型推导 42
1.8 λ演算对函数式语言的影响 44
1.9 中缀操作符与前缀操作符 45
1.10 同构函数和柯里化 46
1.11 循环迭代函数 47
1.12 本章小结 51
1.13 练习 52
第 2章 函数式数据结构 55
2.1 函数式数据类型和自动存储
管理 55
2.2 类型的显式定义 59
2.3 记录类型 61
2.3.1 记录类型和记录的创建 62
2.3.2 函数的记录参数 63
2.3.3 记录字段的重名 63
2.3.4 记录的部分重建 64
2.3.5 记录字段简写 65
2.3.6 多态记录类型 65
2.4 联合类型 65
2.4.1 带参数的构造子 67
2.4.2 由单个构造子构成
的联合类型 68
2.4.3 递归类型 68
2.4.4 带多态变量的联合类型 70
2.4.5 表 70
2.4.6 值的递归定义 71
2.4.7 多态变体 71
2.5 表的编程技术 73
2.5.1 表的基本操作 73
2.5.2 定义表处理函数 75
2.5.3 线性表的同态映射 78
2.5.4 快速排序算法 80
2.6 函数运行时间分析 83
2.7 程序文件的解释执行和编译执行 85
2.8 和C语言比较执行效率 88
2.9 尾递归 90
2.10 option类型和关联表 91
2.11 带标签的函数参数以及
可选参数 92
2.11.1 标签参数 92
2.11.2 可选参数 93
2.11.3 标签参数和可选参数
的显式类型说明 94
2.11.4 高阶函数与标签参数
和可选参数 95
2.11.5 带标签的标准库 96
2.12 延迟求值 96
2.13 本章小结 98
2.14 练习 99
第3章 模块化程序设计 102
3.1 基于无序表的集合 103
3.2 基于有序表的集合 105
3.3 模块和接口 106
3.4 函子 111
3.5 函子的接口 115
3.6 用Set库构造专用集合模块 119
3.7 生成质数集合 121
3.8 异常处理 125
3.8.1 异常表达式 125
3.8.2 异常捕获 126
3.8.3 几个常见的异常 128
3.9 模块的层次结构 129
3.9.1 多层模块 129
3.9.2 模块和文件 130
3.9.3 自动模块化编译
ocamlbuild 132
3.9.4 多参数函子 133
3.9.5 模块局部打开和
模块包含 134
3.10 模块用做表达式 136
3.11 抽象类型 138
3.11.1 抽象类型的作用和限制 138
3.11.2 私有抽象类型 139
3.11.3 局部抽象类型 141
3.12 动态构造模块接口 142
3.12.1 用接口构造接口 143
3.12.2 从模块推导接口 144
3.13 本章小结 144
3.14 练习 146
第4章 命令式程序设计 149
4.1 引用变量和赋值语句 150
4.2 可更改的记录分量 153
4.3 数组 155
4.4 字符串和字节序列 160
4.5 弱类型变量和多态
函数的部分作用 163
4.6 Printf库和格式化输出 165
4.7 Scanf库和格式化输入 168
4.8 文件输入输出 171
4.9 命令式控制结构 174
4.9.1 赋值语句 174
4.9.2 顺序控制 175
4.9.3 操作符“|>” 176
4.9.4 循环控制 177
4.9.5 修改输入参数的函数 178
4.10 编程案例:四向链表 178
4.11 散列表、栈、队列及
命令式模块 185
4.12 本章小结 189
4.13 练习 190
第5章 模块化图形程序设计 192
5.1 生成带图形库的OCaml解释器 193
5.2 图形窗口 193
5.3 图形窗口初始化及参数设置 196
5.4 事件循环 198
5.5 颜色设置 199
5.6 模块化图形编程 200
5.7 文本数字环及字符串绘制 204
5.8 端点小环及图形填充 208
5.9 端点连接线及弧线绘制 212
5.10 命令行参数 217
5.11 电机接线图的完整代码 220
5.12 本章小结 225
5.13 练习 226
第6章 移植OCaml图形程序到F# 229
6.1 打开窗体 230
6.2 窗体初始化 232
6.3 在窗体中间画圆 234
6.4 基本作图模块 235
6.5 文本数字环 239
6.6 端点小环 242
6.7 连接线 244
6.8 F#版电机接线图完整代码 245
6.9 怎样提高OCaml代码的
可移植性 252
6.10 本章小结 253
6.11 练习 254
第7章 多语言联合程序设计 255
7.1 软件总体架构 255
7.2 C#调用OCaml命令行作图
程序 257
7.3 C#调用F#动态共享DLL
作图程序库 259
7.4 C#调用Access数据库 261
7.5 本章小结 264
第8章 面向对象程序设计 265
8.1 类和对象 266
8.2 基于对象方法画电机圆 268
8.3 类的继承 269
8.4 多重继承 271
8.5 多重继承中的同名方法 272
8.6 同名方法的延迟绑定 275
8.7 私有方法 275
8.8 虚拟类和子类型 276
8.9 类中的多态类型 279
8.10 多态类的继承 283
8.11 二元方法 287
8.12 子类型与子类 288
8.13 类的类型 292
8.14 对象之间的相等关系 293
8.15 面向对象的电动机接线程序 294
8.16 本章小结 303
8.17 练习 305
附录 部分习题参考答案 307
参考文献 315
1.1 OCaml解释器 2
1.2 表达式和let定义 3
1.3 let局部定义 6
1.4 基本类型 8
1.4.1 整数类型int 9
1.4.2 浮点类型float 11
1.4.3 字符类型char 13
1.4.4 unit类型和简单输入输出 14
1.4.5 字符串类型string与
printf函数 15
1.4.6 bool类型和if表达式 18
1.5 乘积类型和模式匹配初步 21
1.6 函数和函数类型 23
1.6.1 简单函数 23
1.6.2 函数表达式 28
1.6.3 function和fun比较 30
1.6.4 高阶函数 31
1.6.5 递归函数 33
1.6.6 相互递归函数 36
1.6.7 模式匹配表达式 36
1.7 多态类型 40
1.7.1 类型变量 40
1.7.2 类型推导 42
1.8 λ演算对函数式语言的影响 44
1.9 中缀操作符与前缀操作符 45
1.10 同构函数和柯里化 46
1.11 循环迭代函数 47
1.12 本章小结 51
1.13 练习 52
第 2章 函数式数据结构 55
2.1 函数式数据类型和自动存储
管理 55
2.2 类型的显式定义 59
2.3 记录类型 61
2.3.1 记录类型和记录的创建 62
2.3.2 函数的记录参数 63
2.3.3 记录字段的重名 63
2.3.4 记录的部分重建 64
2.3.5 记录字段简写 65
2.3.6 多态记录类型 65
2.4 联合类型 65
2.4.1 带参数的构造子 67
2.4.2 由单个构造子构成
的联合类型 68
2.4.3 递归类型 68
2.4.4 带多态变量的联合类型 70
2.4.5 表 70
2.4.6 值的递归定义 71
2.4.7 多态变体 71
2.5 表的编程技术 73
2.5.1 表的基本操作 73
2.5.2 定义表处理函数 75
2.5.3 线性表的同态映射 78
2.5.4 快速排序算法 80
2.6 函数运行时间分析 83
2.7 程序文件的解释执行和编译执行 85
2.8 和C语言比较执行效率 88
2.9 尾递归 90
2.10 option类型和关联表 91
2.11 带标签的函数参数以及
可选参数 92
2.11.1 标签参数 92
2.11.2 可选参数 93
2.11.3 标签参数和可选参数
的显式类型说明 94
2.11.4 高阶函数与标签参数
和可选参数 95
2.11.5 带标签的标准库 96
2.12 延迟求值 96
2.13 本章小结 98
2.14 练习 99
第3章 模块化程序设计 102
3.1 基于无序表的集合 103
3.2 基于有序表的集合 105
3.3 模块和接口 106
3.4 函子 111
3.5 函子的接口 115
3.6 用Set库构造专用集合模块 119
3.7 生成质数集合 121
3.8 异常处理 125
3.8.1 异常表达式 125
3.8.2 异常捕获 126
3.8.3 几个常见的异常 128
3.9 模块的层次结构 129
3.9.1 多层模块 129
3.9.2 模块和文件 130
3.9.3 自动模块化编译
ocamlbuild 132
3.9.4 多参数函子 133
3.9.5 模块局部打开和
模块包含 134
3.10 模块用做表达式 136
3.11 抽象类型 138
3.11.1 抽象类型的作用和限制 138
3.11.2 私有抽象类型 139
3.11.3 局部抽象类型 141
3.12 动态构造模块接口 142
3.12.1 用接口构造接口 143
3.12.2 从模块推导接口 144
3.13 本章小结 144
3.14 练习 146
第4章 命令式程序设计 149
4.1 引用变量和赋值语句 150
4.2 可更改的记录分量 153
4.3 数组 155
4.4 字符串和字节序列 160
4.5 弱类型变量和多态
函数的部分作用 163
4.6 Printf库和格式化输出 165
4.7 Scanf库和格式化输入 168
4.8 文件输入输出 171
4.9 命令式控制结构 174
4.9.1 赋值语句 174
4.9.2 顺序控制 175
4.9.3 操作符“|>” 176
4.9.4 循环控制 177
4.9.5 修改输入参数的函数 178
4.10 编程案例:四向链表 178
4.11 散列表、栈、队列及
命令式模块 185
4.12 本章小结 189
4.13 练习 190
第5章 模块化图形程序设计 192
5.1 生成带图形库的OCaml解释器 193
5.2 图形窗口 193
5.3 图形窗口初始化及参数设置 196
5.4 事件循环 198
5.5 颜色设置 199
5.6 模块化图形编程 200
5.7 文本数字环及字符串绘制 204
5.8 端点小环及图形填充 208
5.9 端点连接线及弧线绘制 212
5.10 命令行参数 217
5.11 电机接线图的完整代码 220
5.12 本章小结 225
5.13 练习 226
第6章 移植OCaml图形程序到F# 229
6.1 打开窗体 230
6.2 窗体初始化 232
6.3 在窗体中间画圆 234
6.4 基本作图模块 235
6.5 文本数字环 239
6.6 端点小环 242
6.7 连接线 244
6.8 F#版电机接线图完整代码 245
6.9 怎样提高OCaml代码的
可移植性 252
6.10 本章小结 253
6.11 练习 254
第7章 多语言联合程序设计 255
7.1 软件总体架构 255
7.2 C#调用OCaml命令行作图
程序 257
7.3 C#调用F#动态共享DLL
作图程序库 259
7.4 C#调用Access数据库 261
7.5 本章小结 264
第8章 面向对象程序设计 265
8.1 类和对象 266
8.2 基于对象方法画电机圆 268
8.3 类的继承 269
8.4 多重继承 271
8.5 多重继承中的同名方法 272
8.6 同名方法的延迟绑定 275
8.7 私有方法 275
8.8 虚拟类和子类型 276
8.9 类中的多态类型 279
8.10 多态类的继承 283
8.11 二元方法 287
8.12 子类型与子类 288
8.13 类的类型 292
8.14 对象之间的相等关系 293
8.15 面向对象的电动机接线程序 294
8.16 本章小结 303
8.17 练习 305
附录 部分习题参考答案 307
参考文献 315
猜您喜欢