在Pascal类语言中键入等价

时间:2017-10-10 12:57:07

标签: types pascal modula-2 oberon

Oberon-2语言报告"编程语言Oberon-2"在附录A中有以下定义:

  

两个变量 a b ,类型为 T a T b 属于相同类型如果

     
      
  1. T a T b 两者都用相同的类型标识符表示,或
  2.   
  3. T a 被声明为等于 T b < / sub>在形式 T a = T b < / em> ,或
  4.   
  5. a b 出现在变量,记录字段或形式参数声明中的相同标识符列表中,并且不是开放数组。
  6.   

给出类型声明

Ta = INTEGER
Tb = INTEGER
Tc = Tb

上述定义中的第二段表明

  • Ta Tb 是不同的类型(没有声明 Ta = Tb ),
  • Ta Tc 是不同的类型(没有声明 Ta = Tc )和
  • Tc 和INTEGER是不同的类型(没有声明 Tc = INTEGER)。

这是对Oberon-2中相同类型的正确解释吗?据我所知,Oberon-2在名称等价方面非常严格,在这种情况下,解释实际上是有道理的。那么Standard Pascal和ISO Modula-2呢?

1 个答案:

答案 0 :(得分:1)

问题中相同类型的解释遵循所谓的严格名称等值。例如,在Ada中,通过派生类型支持此功能。在严格的名称等价下,每个类型声明引入了一个不同的类型然而,Pascal,Modula-2和Oberon都使用非严格名称等价。这意味着对于类型标识符 T a ,声明 T b = T a T c = T a make T b T c 等价物。