問題タブ [modula-2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
types - Pascal に似た言語での型の等価性
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は、変数、レコード フィールド、または仮パラメーター宣言の同じ識別子リストにあり、オープン配列ではありません。
型宣言が与えられた場合
上記の定義のパラグラフ 2 は、次のことを示唆しています。
- TaとTbは異なる型 ( Ta = Tbの宣言なし)、
- TaとTcは異なる型 ( Ta = Tcの宣言なし) であり、
- Tcと INTEGER は異なる型です ( Tc = INTEGER の宣言はありません)。
これは、Oberon-2の同じタイプの正しい解釈ですか? 私が理解している限りでは、Oberon-2 は名前の等価性に関して非常に厳密であり、この文脈では解釈は実際に理にかなっています。Standard Pascal と ISO Modula-2 はどうですか?
language-design - 本体の後にモジュール名とプロシージャ名が繰り返されるのはなぜですか?
Modula-2 と Oberon では、各モジュールとプロシージャの宣言は、モジュールまたはプロシージャの名前で終わる必要があります。Pascal では必要ありません。私はこれの動機を本当に理解したことがありません。誰かが私を啓発できますか?