Ich bin mir nicht ganz sicher wie ich das abfangen soll. Wieso gerade mit dem dritten Fall?
Tatsächlich hängt es an der Funktion:
public <AU> append(Cons(a, Cons b),AU list2) {
return new Cons<>(a, append(b, list2));
}
Hier müsste der komplette Typ von b…
Ich meine es kann so auch noch nicht funktionieren:
public <AU> append(Cons(a, Cons b),AU list2) {
return new Cons<>(a, append(b, list2));
}
Die Funktion führt sich…
Ich bekomme jetzt folgendes Ergebnis:
// append(Cons(a, b), list2)
public <AEM extends AEI, AEI> Cons<AEI> append(Cons<AEM> var1, Cons<AEI> var2)
public <AEI, AEG extends AEI>…
Die Gruppierung war falsch, Object & Object sind logischerweise auch gleich (In diesem Fall hat es nicht geklappt weil beides Generics waren).
1:
append(Cons, Object)
append(Empty…
Ich habe mich jetzt mal dran gesetzt und ein weiteres Problem gefunden. Hier werden von der Typinferenz 6 Methoden generiert:
append(Cons, Object)
append(Cons, Empty)
append(Cons,…
Was ich nicht ganz verstehe ist wieso List
hier nirgendwo auftaucht, das sollte doch der allgemeinste Typ sein...
Das Problem waren die Generics und die genesteten Patterns, jetzt scheint es zu funktionieren:
public <AU, ABQ, AEC extends ABQ> Cons<AEC> append(Cons<ABQ> var1, AU var2)
…
Ich habe den Code nochmal angepasst, es liefert aber immernoch nicht das richtige Ergebnis. Jetzt werden zwei neue Constraints generiert:
(Cons<AT> =. Cons<ABQ>), (AR <. ABQ)
Müss…