Oberon-2 言語レポート「The Programming Language Oberon-2」の付録 A には、次の定義があります。
型がT aとT bの2 つの変数aとbは、次の場合に同じ型です。
- T aとT bの両方が同じ型識別子で示されている、または
- T aが、 T a = T bの形式の型宣言でT bと等しいと宣言されている、または
- aとbは、変数、レコード フィールド、または仮パラメーター宣言の同じ識別子リストにあり、オープン配列ではありません。
型宣言が与えられた場合
Ta = INTEGER
Tb = INTEGER
Tc = Tb
上記の定義のパラグラフ 2 は、次のことを示唆しています。
- TaとTbは異なる型 ( Ta = Tbの宣言なし)、
- TaとTcは異なる型 ( Ta = Tcの宣言なし) であり、
- Tcと INTEGER は異なる型です ( Tc = INTEGER の宣言はありません)。
これは、Oberon-2の同じタイプの正しい解釈ですか? 私が理解している限りでは、Oberon-2 は名前の等価性に関して非常に厳密であり、この文脈では解釈は実際に理にかなっています。Standard Pascal と ISO Modula-2 はどうですか?