上传者: kxjrzyk
|
上传时间: 2021-08-03 12:18:33
|
文件大小: 36.13MB
|
文件类型: PDF
类型理论在程序设计语言的发展中起着举足轻重的作用,成熟的类型系统可以帮助完善程序设计本身,帮助运行系统检查程序中的语义错误。
要理解类型系统在程序设计语言中发挥的作用,本书将是首选读物。本书内容覆盖基本操作语义及其相关证明技巧、无类型lambda演算、简单类型系统、全称多态和存在多态、类型重构、子类型化、囿界量词、递归类型、类型算子等内容。本书既注重内容的广度,也注重内容的深度,实用性强。在引入语言的语法对象时先举例,然后给出形式定义及基本证明,在对理论的进一步研究后给出了类型检查算法,并对每种算法都给出了OCaml程序的具体实现。本书对类型理论中的概念都有详细的阐述,为读者提供了一个进一步理论学习的基础。本书内容广泛,读者可以根据自己的需要有选择地深入阅读。
本书适合从事程序设计的研究人员和开发人员,以及程序设计语言和类型理论的研究人员阅读。可作为计算机专业高年级学生、研究生的学习教材。
第1章 引论 1
1.1 计算机科学中的类型 1
1.2 类型系统的优点 3
1.3 类型系统和语言设计 6
1.4 历史概要 6
1.5 相关阅读 7
第2章 数学基础 9
2.1 集合、关系和函数 9
2.2 有序集合 10
2.3 序列 11
2.4 归纳 11
2.5 背景知识阅读 12
第一部分 无类型系统 13
第3章 无类型算术表达式 14
3.1 导论 14
3.2 语法 15
3.3 对项的归纳 17
3.4 语义形式 20
3.5 求值 21
3.6 注释 27
第4章 算术表达式的一个ML实现 28
4.1 语法 28
4.2 求值 29
4.3 其余部分 31
第5章 无类型lambda演算 32
5.1 基础 32
5.2 lambda演算中的程序设计 36
5.3 形式性 43
5.4 注释 46
第6章 项的无名称表示 48
6.1 项和上下文 48
6.2 移位和代换 50
6.3 求值 51
第7章 lambda演算的一个ML实现 53
7.1 项和上下文 53
7.2 移位和代换 54
7.3 求值 55
7.4 注释 56
第二部分 简单类型 57
第8章 类型算术表达式 58
8.1 类型 58
8.2 类型关系 59
8.3 安全性=进展+保持 61
第9章 简单类型的lambda演算 64
9.1 函数类型 64
9.2 类型关系 65
9.3 类型的性质 67
9.4 Curry-Howard对应 70
9.5 抹除和类型性 71
9.6 Curry形式和Church形式 72
9.7 注释 72
第10章 简单类型的ML实现 73
10.1 上下文 73
10.3 类型检查 74
10.2 项和类型 74
第11章 简单扩展 76
11.1 基本类型 76
11.2 单位类型 77
11.3 导出形式:序列和通配符 77
11.4 归属 79
11.5 let绑定 80
11.6 序对 81
11.7 元组 83
11.8 记录 84
11.9 和 86
11.10 变式 88
11.11 一般递归 93
11.12 列表 95
第12章 规范化 97
12.1 简单类型的规范化 97
12.2 注释 99
第13章 引用 100
13.1 引言 100
13.2 类型化 104
13.3 求值 104
13.4 存储类型 106
13.5 安全性 108
13.6 注释 111
第14章 异常 112
14.1 提升异常 112
14.2 处理异常 113
14.3 带值的异常 114
第三部分 子类型化 119
第15章 子类型 120
15.1 包含 120
15.2 子类型关系 121
15.3 子类型化和类型化的性质 125
15.4 Top类型和Bottom类型 128
15.5 子类型化及其他特征 129
15.6 子类型化的强制语义 134
15.7 交叉类型和联合类型 138
15.8 注释 139
第16章 子类型的元理论 140
16.1 算法子类型化 141
16.2 算法类型化 143
16.3 合类型和交类型 146
16.4 算法类型化和Bottom类型 148
第17章 子类型化的ML语言实现 149
17.1 语法 149
17.2 子类型化 149
17.3 类型化 150
第18章 实例分析:命令式对象 152
18.1 什么是面向对象编程 152
18.2 对象 153
18.3 对象生成器 154
18.4 子类型化 155
18.5 聚集实例变量 155
18.6 简单类 15