Dieser Hinweis ist aus der Übung im WS 1994/95 oder aus einer noch älteren Übung oder war nie Teil einer Übung und ist daher möglicherweise für spätere Übungen nicht gültig!
Freie Variablen als Ziele Um besonders allgemeine Prädikate definieren zu können, können Ziele auch freie Variablen sein. Zum Zeitpunkt des Beweises des Ziels muß das Ziel aber bekannt sein. Fehler: :- X. Kein Fehler: :- Ziel = (X = 1), Ziel. apply(Pred, Args) :- Pred =.. List, append(List, Args, Full), Goal =.. Full, Goal. Mit einem derartigen Prädikat kann man sehr allgemeine (generische) Prädikate schreiben. Etwa: partition(Ts, Vgl, Pivot, Ks, Gs) :- % allfällige Tests partition_i(Ts, Vgl, Pivot, Ks0, Gs0), Ks = Ks0, Gs = Gs0. partition_i([], _Vgl, _Pivot, [], []). partition_i([T|Ts], Vgl, Pivot, Ks, [T|Gs]) :- apply(Vgl,[T,Pivot]), !, partition_i(Ts, Vgl, Pivot, Ks, Gs). partition_i([T|Ts], Vgl, Pivot, [T|Ks], Gs) :- partition_i(Ts, Vgl, Pivot, Ks, Gs). :- partition([4,1,5,2], <, 3, Ks, Gs). kleiner(ascii,A,B) :- A < B. kleiner(ebcdic,A,B) :- wie_auch_immer(A,B). kleiner(iso_8859_1,A,B) :- sonstwie(A,B). :- partition("A8sdf",kleiner(ascii),0'Z,Ks,Gs). \hinweis{PrologAllgemein} Zurück: \hinweis{init}