Das Problem hier ist nicht die Rekursion - es ist tatsächlich eine Frage der Typparameter, die nicht den Grenzen entsprechen, wie die Fehlermeldung sagt. Ihr Beispiel funktioniert perfekt, wenn Sie die Parameter kovariant machen:
%Vor% In Ihrer Version (ohne Kovarianz) sagt uns die Tatsache, dass V
ein Untertyp von VV[UU[V]]
ist, nichts darüber, ob UU[V]
ein Subtyp von UU[VV[UU[V]]]
ist oder nicht, daher erhalten wir den Konformitätsfehler. Wenn die Typparameter kovariant sind, wissen wir, dass V
ein Subtyp von VV[UU[V]]
ist, was bedeutet, dass UU[V]
ein Subtyp von UU[VV[UU[V]]]
ist und alles in Ordnung ist.