This is a hint (Hinweis) text of GUPU taken literally from the system. It's probably not very interesting reading for you.
**NEXT:To continue the guided tour go back where You came from
**NEXT:Continue reading the hints in German (...)

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}

**NEXT:To continue the guided tour go back where You came from
**NEXT:Continue reading the hints in German