新しく 2.10 から(?) dependent method types っていう機能が Scala に入るらしいので、最新版をゴニョゴニョしてみた。
2.9.1で上記のことやろうとすると def withFoo(foo: Foo): foo.Bar = foo.f
という部分がコンパイル通らないはず。fooという 引数 の抽象型であるBarに依存した型だからっていう感じ?
しかし、機能の概念はなんとなくぼんやりと、把握はできたが、まだどういったときに役に立つのかわかっていない(・ω・`)
http://stackoverflow.com/questions/7860163/what-are-some-compelling-use-cases-for-dependent-method-types このコミットらしいよ gist上でのちょっとした議論?