[Type] 关于Bot类型

关于Bot类型一直有所疑惑,是因为相关概念之间没有建立联系。
于是,来回翻书整理如下:


Bot类型中没有一个闭值——P128
我们没有将error包含在值的语法中,只是在项的语法中——P113
每个都是一个范式不是值的范式在运行时间错误分析中起着极其重要的作用——P23

项的子集称为,表示求值的最终结果——P21
如果没有求值规则可以作用于t,则该项是范式——P23
如果一个封闭项是一个范式但不是一个值,则称该项受阻——P26
一个不含自由变量的项称为封闭项——P34

我们允许在任何上下文中提升一个异常,项error的形式可以有任何的类型。
error类型的这个灵活性在实现类型检查算法时会提高难度,因为它破坏了下面的性质:每个在语言中可类型化的项有唯一的类型。
这能用几种方法来处理,在带有子类型的语言中,我们能给error赋予最小类型Bot,它在必要时可以提升为任何其他类型
在带参数多态的语言中,能给error多态类型forall X.X,它能实例化为任何其他类型。——P113


总结:

项:t ::= error:Bot(error是一个合法的项,且具有类型Bot
值:v ::= 空(Bot类型没有值
类型:T ::= Bot(定义Bot是一个类型
求值规则:(没有对应于项error的求值规则,error是范式,但不是一个值
类型规则:Bot<:T(定义Bot类型是任意其他类型的子类型


参考:

类型和程序设计语言

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,279评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,834评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,246评论 19 139
  • 知识点; 简单mysql数据库恢复操作; 完整备份方式;
    ALuckyLive阅读 569评论 0 0
  • 看着看着 想起我们的点滴 那时的你显得落落有方 而我只是一个浪荡不羁的小阿姐 想起你的笑 你做作业时的...
    傻样你在冒泡呢阅读 255评论 0 0