0

Oberon-2 言語レポート「The Programming Language Oberon-2」の付録 A には、次の定義があります。

型がT aT bの2 つの変数abは、次の場合に同じ型です。

  1. T aT bの両方が同じ型識別子で示されている、または
  2. T aが、 T a = T bの形式の型宣言でT bと等しいと宣言されている、または
  3. abは、変数、レコード フィールド、または仮パラメーター宣言の同じ識別子リストにあり、オープン配列ではありません。

型宣言が与えられた場合

Ta = INTEGER
Tb = INTEGER
Tc = Tb

上記の定義のパラグラフ 2 は、次のことを示唆しています。

  • TaTbは異なる型 ( Ta = Tbの宣言なし)、
  • TaTcは異なる型 ( Ta = Tcの宣言なし) であり、
  • Tcと INTEGER は異なる型です ( Tc = INTEGER の宣言はありません)。

これは、Oberon-2の同じタイプの正しい解釈ですか? 私が理解している限りでは、Oberon-2 は名前の等価性に関して非常に厳密であり、この文脈では解釈は実際に理にかなっています。Standard Pascal と ISO Modula-2 はどうですか?

4

1 に答える 1

2

質問の同じ型の解釈は、厳密な名前の等価性と呼ばれるものに従います。たとえば、Ada では、この機能は派生型によってサポートされています。厳密な名前の等価性の下では、各型宣言は個別の型を導入します。ただし、Pascal、Modula-2、および Oberon はすべて、非厳密な名前の等価性を使用します。これは、型識別子T aに対して、宣言T b = T aおよびT c = T aT bT cを等価にすることを意味します。

于 2017-10-11T08:38:15.497 に答える