【发布时间】:2017-10-10 12:57:06
【问题描述】:
Oberon-2 语言报告“The Programming Language Oberon-2”在附录 A 中有以下定义:
两个变量a和b,类型为Ta和Tb 属于 同一类型 if
- Ta 和 Tb 都表示通过相同的类型标识符,或
- Ta 被声明为等于 Tb在 Ta = Tb 形式的类型声明中,或
- a 和 b 在变量、记录字段或形参声明中出现在同一个标识符列表中,并且不是开放数组。
给定类型声明
Ta = INTEGER
Tb = INTEGER
Tc = Tb
上述定义中的第二段表明
- Ta 和 Tb 是不同的类型(没有声明 Ta = Tb),
- Ta 和 Tc 是不同的类型(没有声明 Ta = Tc)和
- Tc 和 INTEGER 是不同的类型(没有声明 Tc = INTEGER)。
这是对 Oberon-2 中相同类型的正确解释吗?据我了解,Oberon-2 在名称等效性方面非常严格,在这种情况下,这种解释实际上是有道理的。标准 Pascal 和 ISO Modula-2 怎么样?
【问题讨论】:
-
在 Pascal 中,INTEGER 是预定义的类型标识符,因此 Ta、Tb 和 Tc 都将是相同的类型。我的猜测是 Oberon-2 也是如此。
标签: types pascal modula-2 oberon