プログラミング言語 Scala 7冊目
■ このスレッドは過去ログ倉庫に格納されています
0575デフォルトの名無しさん
2011/11/29(火) 21:44:17.15>>538
(T)T が (Int)Int を包含するのは異論なし。
しかし、[U >: T](U)U が (Int)Int を包含しないのは納得いかない。
> 長くなりましたが、一言で理由を述べるなら、「非多相メソッド」と「多相
> メソッド」のシグニチャの間には互換性が成立しない、ということが根本的
> な問題です。
(T)T と [U >: T](U)U が互換性が無いのも異論なし。
だって [U >: T](U)U ⊇ (T)T なのは自明だから。
んで、(T)T ⊇ Int(Int) なのだから、
[U >: T](U)U ⊇ (T)T ⊇ Int(Int) になるよね。
だから、[U >: T](U)U は (Int)Int を包含するじゃん?
あと、もう一度聞くけど、>>535の(2)と(3)はそれで正しい?
大文字のXが未定義とか、Uが[]の中に含まれていないとか、
Scalaは+メソッドに交換法則を強制していないから
def f[T <: { def +[U,V](other: U): V }, U, V](x: T, y: U) = x + y
の方が一般的とか、気になる点が3点もあるんだけれど。
■ このスレッドは過去ログ倉庫に格納されています