G
Guest
Gast
Hallo Leute,
das sieht vllt. ein wenig verrückt aus, was ich hier mache, aber nichts destotrotz maul der der Java-Compiler die ganze Zeit an einer Stelle meines Quelltextes rum. Ich weiß echt nicht mehr weiter.
Der Code:
In der letzten Zeile mit dem return bekomme ich immer den Fehler:
F.java:40: illegal start of expression
return Cat(Not(), IsEmpty<A>());
^
F.java:40: ')' expected
return Cat(Not(), IsEmpty<A>());
^
Das scheint daran zu liegen, dass ich der statischen Funktion IsEmpty ihren Typparameter übergeben will. Geht das nicht oder verwende ich nur die falsche Syntax? Lasse ich den Typparameter weg, bekomme ich folgende Fehlermeldung:
found : Function<java.util.List<java.lang.Object>,java.lang.Boolean>
required: Function<java.util.List<A>,java.lang.Boolean>
return Cat(Not(), IsEmpty());
^
Also wie gesagt, ich weiß an dieser Stelle nicht mehr weiter. Es wäre echt sehr nett, wenn mir jemand helfen könnte.
Besten Dank im Voraus,
Martin.
das sieht vllt. ein wenig verrückt aus, was ich hier mache, aber nichts destotrotz maul der der Java-Compiler die ganze Zeit an einer Stelle meines Quelltextes rum. Ich weiß echt nicht mehr weiter.
Der Code:
Code:
// Schnittstelle für Funktionsobjekte.
public interface Function<A,B> {
public B evaluate(final A x);
}
import java.util.List;
// Klasse zur Bereistellung von Funktionsobjekten
public final class F {
//Funktionsobjekt, das für eine Liste ermittelt ob sie leer ist.
public static <A> Function<List<A>, Boolean> IsEmpty() {
return new Function<List<A>, Boolean>() {
public Boolean evaluate(List<A> x) {
return x.isEmpty();
}
};
}
// Funktionsobjekt, das sein argument logisch negiert.
public static Function<Boolean,Boolean> Not() {
return new Function<Boolean,Boolean>() {
public Boolean evaluate(Boolean x) {
return !x;
}
};
}
// Funktionsobejt, das zwei Funktionsobjekte zusammen setzt, ala (f ° g)(x) = f(g(x))
public static <A,B,C> Function<A,C> Cat(final Function<B,C> f, final Function<A,B> g) {
return new Function<A,C>() {
public C evaluate(A x) {
return f.evaluate(g.evaluate(x));
}
};
}
// Aus den oberen Funktionsobjekten zusammengesetztes, dass das Gegenteil von
// IsEmpty liefern soll. (Das ginge vielleicht auch anders, aber der Code ist konstruiert
// und vom eigentlich Problem soweit heruntergebrochen wurden.
public static <A> Function<List<A>, Boolean> NotEmpty() {
return Cat(Not(), IsEmpty<A>());
}
}
In der letzten Zeile mit dem return bekomme ich immer den Fehler:
F.java:40: illegal start of expression
return Cat(Not(), IsEmpty<A>());
^
F.java:40: ')' expected
return Cat(Not(), IsEmpty<A>());
^
Das scheint daran zu liegen, dass ich der statischen Funktion IsEmpty ihren Typparameter übergeben will. Geht das nicht oder verwende ich nur die falsche Syntax? Lasse ich den Typparameter weg, bekomme ich folgende Fehlermeldung:
found : Function<java.util.List<java.lang.Object>,java.lang.Boolean>
required: Function<java.util.List<A>,java.lang.Boolean>
return Cat(Not(), IsEmpty());
^
Also wie gesagt, ich weiß an dieser Stelle nicht mehr weiter. Es wäre echt sehr nett, wenn mir jemand helfen könnte.
Besten Dank im Voraus,
Martin.