gistに書いたものを、ほとんど書き写すだけの簡単なお仕事(`・ω・´)
以下が最新版をゴニョゴニョしてみた結果。(このblog書いている時点の最新の安定版である) 2.9.1で同じことやろうとすると
def withFoo(foo: Foo): foo.Bar = foo.f
という部分がコンパイル通らないはず。fooという 引数 の抽象型であるBarに依存した型だからっていう感じ?
追記:
例としての自分の書いたコードが適切なのかどうかあやしい気がしてきたがががが(´・ω・`)
StackOverflowの解説がかなり詳しいのでちゃんと知りたい人はそっち読んで!(ぉぃ
以下参考URL
StackOverflowの解説がなぜかやたら詳しい
このコミットらしい
gist上でのちょっとした議論
そして、こんなこと言ってたら
#Scala で新しく入る予定の depend type がなんとなくわかったっぽ。面白いけど、どう役立てればいいのかさっぱり(´・ω・`)
2011-10-23 03:13:30 via web
教えてもらった♪
@xuwei_k つ『Type Classes as Objects and Implicits』6.4 Arity Polymorphic ZipWith 辺りが参考になるのではないかと。汎用(n引数)zipWithをDRYにかけるという話です。 #scalajp
2011-10-23 08:36:01 via web to @xuwei_k
なので、見てみた
あーホントだ URL 論文の中に (implicit zw : ZipWith [R]) = new ZipWith[S => R]{type ZipWithType = Stream[S] => zw.ZipWithTypeっていう記述が
2011-10-23 13:18:46 via web
みんなこの論文
http://ropas.snu.ac.kr/~bruno/papers/TypeClasses.pdf
読みましょう(`・ω・´)
List[Int]に対してはsumメソッドが呼べて、List[String]に対してsumメソッド呼ぼうとするとコンパイルエラーになるというような感じの、Haskellと比較しての型クラスの話とか、dependent method types以外にも色々書いてある有名な(?)論文です