私はFoundations of path dependent typesを読んでいます。最初のページで、右側の列にそれが書かれている:型メンバーを持つオブジェクト:Scalaのオブジェクトとモジュールシステムは何ですか? (パス依存型のOdersky論文を理解しようとしています)
Our motivation is twofold. First, we believe objects with type members are not fully understood. It is not clear what causes the complexity, which pieces of complexity are essential to the concept or accidental to a language implementation or calculus that tries to achieve something else. Second, we believe objects with type members are really useful. They can encode a variety of other, usually separate type system features. Most importantly, they unify concepts from object and module systems, by adding a notion of nominality to otherwise structural systems.
は、誰かが「オブジェクトモジュール対」システムはどういう意味/明確に説明してもらえますか?
または一般に、
は何を意味するのでしょうか?
どのような概念ですか?どこから ?
オブジェクト名/値のNominality? タイプの構造は?それとも別の方法ですか?
ここのメンバーはどこに属していますか?モジュールシステムに?オブジェクトシステム?どうやって?どうして?
EDIT:
どのようにこの統一は、パス依存型に関連していますか?この統一が起こることを彼らが認めているようです(型メンバーを持つオブジェクト)。そうですか ? はいの場合、どうですか?
簡単な例を教えてください。 (つまり、パス依存型は、モジュールやオブジェクトシステムの統一を可能対我々はパス依存型を持っていないならば、なぜ統合が起こる可能ではないでしょうか?)
EDIT 2:
紙から:
To make any use of type members, programmers need a way to refer to them. This means that types must be able to refer to objects, i.e. contain terms that serve as static approximation of a set of dynamic objects. In other words, some level of dependent types is required; the usual notion is that of path-dependent types.
だから、これまでのところ(ジェスパーの答えの助けを借りて)私の理解:
は、部分的に上記のこの段落は、上記の質問のいくつかに答えます。主なのは、型メンバーを持つオブジェクトを持ち、オブジェクトが動的/ランタイムに依存するが型は静的(コンパイル時に定義される)なので、その型依存型が必要なように思えます。コンパイル時にこれらの型メンバーが明確に定義されないためです。
パス依存型は、コンパイル時に型メンバに至るパスを固定することによって(コンパイル時にオブジェクトがすでに認識されていることを要求することによって)、パスがオブジェクトコンパイル時にそれらのオブジェクトが既に固定されている場合、それらの型メンバーはコンパイル時にも明確な意味を持つことができます。
PS:PDFはこちらからもダウンロードできます:http://lampwww.epfl.ch/~amin/dot/fpdt.pdf – jhegedus