abstract class Dog[+T,-U,V] {
def bark[A >: Dog[T,Dog[U,T,V],Dog[V,V,V]], B <: Dog[U,T,V]](
stranger: A,
listener: (Dog[U,T,A]=>B)=>B
): Dog[Dog[T,U,V], T=>U, B]
}
これは私の宿題の問題の 1 つで、私を完全に混乱させました。コンパイラがエラーを報告するかどうかを尋ねる質問。共変と反変が単一の型でどのように機能するかを理解しています。
これが問題の私の考えです。間違っている場合は修正してください。
def bark[A >: Dog[T,Dog[U,T,V],Dog[V,V,V]], B <: Dog[U,T,V]]
この行は A と B の両方が型パラメーターの位置であり、反転する必要があり、B は B >: Dog[U,T,V] である必要がありますが、プログラムの他の部分については、何が起こっているのかわかりません。