特定多态的类型检查函数与算符重载与算符的辨.pptVIP

特定多态的类型检查函数与算符重载与算符的辨.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

4.7.1.7如何形式化类型系统(续2)具有类型系统的语言被称为类型化的语言。形式化类型规则之前,必需引入另一个不在语言的语法中反映的基本因素:静态类型环境(statictypingenvironments)。它们被用于在处理程序片断时记录自由变量的类型,其作用类似于编译器在类型检查阶段的符号表。类型规则总是将被类型检查的片断公式化为与一个静态环境相联系。可以将有-类型M:A与一个包含M和A的自由变量信息的静态类型环境相联系。此关系被写为:Γ├M:A,意思是在环境Γ中M具有A类型。例如:{intx}├x:int4.7.1.7如何形式化类型系统(续3)形式化语言的最后一个步骤是在项与规则集之间定义其语义为一个有-值(has-value)关系。这一关系的形式强烈依赖于它所采用的语义风格。一个语言的类型系统和语义是相关联的:一个项的类型与它的结果应该是相关的,这是健全定理的实质所在。类型相同的基本符号适用于几乎所有可计算范型(函数的、强制的、并发的,等等)。单独的类型规则常可以不被修改地用于不同的范型。例如,不管函数是换名调用还是值调用,也不管是函数式语言还是强制式语言,函数的基本类型规则都是一样的。4.7.1.8类型等价实际中大多数语言混合使用结构和名字等价。纯的结构等价可以很容易和精确的由类型规则定义,而名字等价相对困难一些并且具有算法的味道。结构等价的优越性在于类型化的数据可以在网络中传输和存储;而名字等价不易处理不同时期和不同地点被开发和编译的程序的交互。下边假设结构等价。名字等价可以效法结构等价,如Modula-3的标牌(branding)机制。考虑两个赋予相似类型的不同类型名: typeX=Bool typeY=Bool若类型名X和Y根据相同的类型它们匹配,称为结构等价(structuralequivalence)。若它们根据名字不匹配,则称为名字等价(by-nameequivalence)。4.7.2类型系统语言类型系统规定程序设计语言的类型规则,而与特定的类型检查算法无关。这类似于与用文法形式化地规定一个程序设计语言的语法与特定的语法分析算法无关。将类型系统与类型检查算法分开既便利又有用:类型系统属于语言定义,而算法属于编译器。用类型系统解释一个语言的类型检查问题远比用给定的编译器所使用的算法来解释要容易。此外,不同的编译器对相同统的类型系统可能会使用不同的类型检查算法。作为一个次要问题,可能会定义一个类型系统而很难或根本无法得到其类型检查算法。通常的意向是允许有效的类型检查算法。4.7.2.1判断(Judgments)类型系统的描述由一组被称为判断的形式化标记开始。一个类型判断具有下述形式:Г├τ τ是一个断言(assertion),τ的自由变量在Г中声明。称Г承载(entails)τ。此处Г是一个静态类型环境;例如一个形如φ,x1:A1,...,xn:An的可区分变量和它们的类型的有序列表。空环境表示为φ,Г中声明的变量集合由Г的域dom(Г)表示。断言τ的形式在不同的判断中表现不同,但τ的所有自由变量必需在Г中声明。4.7.2.1判断(Judgments)(续1)最重要的判断是类型判断(typingjudgment),对于静态类型环境中的、具有A类型的项M,M的自由变量具有形式:Г├M:A M在Г中具有A类型例如:φ├true:Bool ture是Bool类型φ,x:Nat├x+1:Nat 若x是Nat类型则x+1是Nat类型最普通的一个断言如下,它表示一个环境是良态的:Г├

Г是良态的(即它是被恰当构造的)4.7.2.1判断(Judgments)(续2)任何一个给定的判断可被认为是有效的(如Г├true:Bool)或无效的(例如Г├true:Nat)。有效性形式化了良类型化程序的概念。有效判断与无效判断的区别可以有若干种表示方式,现已有了高度风格化的有效判断集合的表示方法。这一基于类型规则的表示风格方便了关于类型系统引理和定理的陈述与证明。此外,类型规则是高度模块化的,不同结构的类型规则可以分别写(与单一的类型检查算法对应),因此类型规则相对容易阅读和理解。4.7.2.2类型规则(Typerules)当所有前提均满足时结论成立;前提可以没有。每个规则有一个名字(为了方便,名字的第一个字由结论判断确定,例如结论是值类型判断,其规则的名字可以形如

文档评论(0)

192****4212 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档