类 Pascal 语言中的类型等价

Type equivalence in Pascal-like languages

Oberon-2 语言报告 "The Programming Language Oberon–2" 在附录 A 中有以下定义:

Two variables a and b with types Ta and Tb are of the same type if

  1. Ta and Tb are both denoted by the same type identifier, or
  2. Ta is declared to equal Tb in a type declaration of the form Ta = Tb, or
  3. a and b appear in the same identifier list in a variable, record field, or formal parameter declaration and are not open arrays.

给定类型声明

Ta = INTEGER
Tb = INTEGER
Tc = Tb

上述定义中的第二段表明

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

问题中同类型的解释遵循所谓的严格名称等价。例如,在 Ada 中,此功能通过 派生类型 得到支持。在严格的名称等价性下,每个类型声明都引入了一个不同的类型。然而,Pascal、Modula-2 和 Oberon 都使用 非严格名称等价 。这意味着对于类型标识符 Ta,声明 Tb = TaTc = Ta 使TbTc等价.