Prolog-Interpreter geschrieben in Prolog

mohi01

Grünschnabel
Hallo

Ich hab ein Problem, ich sollte einen Prolog-Interpreter für Prologprogramme schreiben, aber nur für logische Programme, also ohne Arithmetik und anderem Zeug. Die Argumente werden
so angegeben:

Code:
interpret([[clause, clause],[clause, clause]],[[query],[query]])

z.B.:
interpret([ [nat(0)], [nat(s(X)), nat(X)] ], [nat(s(s(0))), nat(s(0))]).

heißt nichts anders als:

nat(0). 
nat(s(X)) :- nat(X).

mit der Query

nat(s(s(0))), nat(s(0)).

Ich hab mir schon einige Gedanken gemacht, aber hergebracht hab ich nur eine Skelettstruktur:

Code:
interpret([], []).

interpret([X|Xs], [Y|Ys]):-
    X,                              %hier sollte ich X mit Y unifizieren
    Y,
    interpret(Xs, Ys).

split([X|Xs], Z):- %zum splitten der er Liste von Listen der Klauseln.
    Z = X,
    split(Xs, Z).

Das Problem ist ich sollte die Clauses mit der Query unifizieren, damit ich zu einer Lösung komme, ich hab aber keine Ahnung wie ich das machen soll, dazu reichen meine Prolog-Skills nicht aus.
Wenn sich jemand mit Prolog auskennt und mir helfen könnte, wäre ich sehr verbunden.
 
Zuletzt bearbeitet:
Zurück