% Ausschnitt aus einer Verwandtschaft:

% Vater-Fakten:
vater(fritz,thomas). % Fritz ist Vater von Thomas
vater(thomas,maria).
vater(thomas,anna).

% Ein Grossvater ist ein Vater des Vaters (unvollstaendig!)
grossvater(Grossvater,Enkel) :- vater(Grossvater,Vater), vater(Vater,Enkel).
%grossvater(G,E) :- vater(G,V), vater(V,E).

% ?- grossvater(fritz,E).
% |- { G |-> fritz }
% ?- vater(fritz,V), vater(V,E).
% |- { V |-> thomas }
% ?- vater(thomas,E).
% |- { E |-> maria }
% ?- .

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Von Funktionen (n-stellig) zu Praedikaten (n+1 - stellig):

%app :: [a] -> [a] -> [a]
%app []     ys = ys
%app (x:xs) ys = x : app xs ys

app([],    Ys,Ys).
app([X|Xs],Ys,[X|Zs]) :- app(Xs,Ys,Zs).

% last element of a list:
last(L,E) :- app(_,[E],L).

