研究生院第六章详解.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * 实际上,int转换为float也可能会丢失精度 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 多态函数(16) 例:ML函数类型的类型推导: fun length ( lptr ) = if null( lptr ) then 0 else length( tl( lptr ) ) + 1; 分别引入类型变量β和γ 表示length和lptr的类型,length(lptr)的类型和函数体的类型匹配,所以length的类型是 类型声明及要检查的表达式 多态函数(17) 行 表达式 :类型 代换 (1) lptr :γ (2) length : β (3) length( lptr ) : δ β=γ→δ (4) lptr :γ (5) null : list(αn)→ boolean (6) null( lptr ) : boolean γ= list(αn) (7) 0 : integer (8) lptr : list(αn) (9) tl : list(αt)→ list(αt) (10) tl( lptr ): list(αn) αt→ αn (11) length : list(αn)→ δ (12) length( tl( lptr ) ) : δ (13) 1 : integer (14) + : integer×integer→integer (15) length( tl( lptr ) ) + 1: integer δ=integer (16) if : boolean×αi×αi→ αi (17) if ( … ) :integer αi=integer (18) match : αm×αm→ αm (19) match( … ):integer αm=integer 多态函数(18) 由(3)可知length的函数类型表达式 由(6)知道γ 和list(αn)合一,此时知道length的类型是:对任何类型αn,list(αn)→δ 在(15)知道δ和integer合一 最后得到length的类型: * * * * * * 嵌入的代码是把子程序中的操作代码复制到程序中的调用点。 * * * * * * * * * * * * * * * * * * * * 从这里可以看出静态类型检查的缺点,数组的类型检查中E2只察看了类型,并没有讨论其取值范围,所以潜在的无法检查出越界访问 * * * 简单类型检查器的说明(10) 从整型到实型的类型检查规则: E→num { E.type := integer } E→num.num { E.type := real } E→id { E.type := lookup(id.entry) } E→E1 op E2 { E.type := if E1.type = integer and E1.type = integer then integer else if E1.type = integer and E1.type = real then real else if E1.type = real and E1.type = integer then real else if E1.type = real and E1.type = real then real else type_error } 类型表达式的等价(1) 类型等价 类型检查经常要面临的问题: 两个类型表达式是否表示相同的类型 struct t1 { struct t2 { int x; int x1; int y[100]; int y1[100]; }; }; 类型等价和类型表示是相互影响的 类型等价的常用形式 结构等价 名字等价 在类型等价中,递归定义如何处理 类型表达式的等价(2) 类型表达式的结构等价 结构等价的定义 两个类型表达式是同样的基本类型 或两

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档