TAT-Sub的设计和实现
TAT-Sub
TAT-Sub是基于TAT-STLC的类型检查器,具有前者的全部功能,因此保留所有TAT-STLC的类型规则。
此外,还增加了子类型的定型规则。
子类型定型规则
自反性。
传递性。
我们还引入了顶类型。
关于函数类型,我们使用之前推导出来的定型规则。
子类型定型规则(续)
这是我们使用的对象类型的子类型定型规则,它引入了结构子类型。
这个规则下,我们有:
{a:Num, b:{c:Str}} <: {a:Num}
{a:Num, b:{c:Str}} <: {a:Num, b:{c:Top}}
我们还需要往我们的类型系统中加入安全替换原则。
TAT-Sub的代码实现
Live coding!
作业
- 实现TAT-Sub,通过所有的测试用例。