| | |
Summary: MetaInterpreter 1:
prove(true) :- !.
prove((Goal1, Goal2)) :- !, prove(Goal1), prove(Goal2).
prove(Goal) :- clause(Goal, Body), prove(Body).
MetaInterpreter 2:
prove(true) :- !.
prove((Goal1, Goal2)) :- !, prove(Goal2), prove(Goal1).
prove(Goal) :- clause(Goal, Body), prove(Body).
MetaInterpreter 3:
prove(true,0) :- !.
prove((Goal1,Goal2),N) :- !, prove(Goal1,N1), prove(Goal2,N2),
N is N1+N2.
prove(Goal,N) :- clause(Goal, Body), prove(Body,N1),
N is N1+1.
Klassisches append:
append([],Ys,Ys).
append([X|Xs],Ys,[X|Zs]) :- append(Xs,Ys,Zs).
app mit Differenzlisten:
app(Xs - Ys, Ys - Zs, Xs - Zs).
Beispielgrammatik G = (N, T, S, P)
|