%Rekursion über Listen %element/2 (= member/2) %Beispiel: element(a,[b,c,a]) ergibt YES element(X,[X|_]). element(X,[_|R]) :- element(X,R). %Streiche jedes zweite und weitere Vorkommen eines Terms in einer Liste %Bespiel uniq([a,b,c,a,b],L) ergibt YES, L = [a,b,c] uniq([],[]). uniq([Kopf|Rest],[Kopf|Rest1]) :- loesche_alle(Kopf,Rest,NeuerRest), uniq(NeuerRest,Rest1). %Loesche alle Vorkommen eines Terms in einer Liste loesche_alle(_,[],[]). loesche_alle(Kopf,[Kopf|Rest],Liste) :- !, loesche_alle(Kopf,Rest,Liste). loesche_alle(Kopf,[X|Rest],[X|Rest1]) :- loesche_alle(Kopf,Rest,Rest1).