Types 类Pascal语言中的类型等价
Oberon-2语言报告“编程语言Oberon–2”在附录A中有以下定义: Ta和Tb类型的两个变量a和b的类型相同,如果Types 类Pascal语言中的类型等价,types,pascal,modula-2,oberon,Types,Pascal,Modula 2,Oberon,Oberon-2语言报告“编程语言Oberon–2”在附录A中有以下定义: Ta和Tb类型的两个变量a和b的类型相同,如果 Ta和Tb都由相同的类型标识符表示,或 Ta在Ta=Tb形式的类型声明中声明为等于Tb,或 a和b出现在变量、记录字段或正式参数声明的同一标识符列表中,并且不是开放数组 给定类型声明 Ta = INTEGER Tb = INTEGER Tc = Tb 上述定义第二段表明: Ta和Tb是不同的类型(未声明Ta=Tb) Ta和Tc是不同的类型(未声明Ta=Tc)和 Tc和I
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呢?问题中对同一类型的解释遵循所谓的严格名称等效。例如,在Ada中,派生类型支持此功能。在严格的名称等价下,每个类型声明都会引入一个不同的类型。然而,Pascal、Modula-2和Oberon都使用非严格的名称等价。这意味着对于类型标识符Ta,声明Tb=Ta和Tc=Ta使Tb和Tc等效。问题中对相同类型的解释遵循所谓的严格名称等效。例如,在Ada中,派生类型支持此功能。在严格的名称等价下,每个类型声明都会引入一个不同的类型。然而,Pascal、Modula-2和Oberon都使用非严格的名称等价。这意味着对于类型标识符Ta,声明Tb=Ta和Tc=Ta使Tb和Tc等效。在Pascal中,INTEGER是预定义的类型标识符,因此Ta、Tb和Tc都是相同的类型。我猜Oberon-2也是如此。在Pascal中,INTEGER是预定义的类型标识符,因此Ta、Tb和Tc都是相同的类型。我猜奥伯龙2号也是如此。