Indirekte rekursive generische Typdefinitionen in scala

8

Direkte Typ Rekursion funktioniert einfach:

%Vor%

Aber ich kann indirekte mit naiven Ansatz machen

%Vor%

gib mir einen Fehler:

%Vor%

Wie sollte die Rekursion von indirekten Typen korrekt ausgedrückt werden?

    
ayvango 03.06.2012, 15:50
quelle

1 Antwort

11

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.

    
Travis Brown 03.06.2012, 18:49
quelle

Tags und Links