Scalaの経路依存型(path-dependent type)とは?
Functional Programming in Scala の Wiki を翻訳している中で path-dependent types という単語が出てきてよくわからなかったので調べました。 調べたら hishidama さんのページが出てきてくれたので良かった(?)です。 詳細はそちらを参照していただければという感じなんですが、以下一応自分なりに噛み砕いてまとめてみました。
経路依存型(path-dependent types)
普通に Java で内部クラスを定義したとすると、以下のような感じになると思います。Scala でも同様に書けると思います。
class A { class B { } }
さてここから先、内部クラスのインスタンスを生成したときの挙動が Java と Scala で変わるそうです。 まずは Java の例を見てみましょう。
Java では class A の異なるインスタンス a1, a2 を用いて、それぞれの内部クラス B のインスタンスを生成したとしても、それらは同じ型です。 つまり以下のような...
Read More