Hallo,
ich bin langsam am Verzweifeln. Suche seit Montag eine vernünftige Doku für SWI-Prolog und Definition von Operatoren. Folgendes Problem:
Wir sollen zwei Zahlen mit Hilfe einer Funktion addieren. Diese Funktion wandelt die nat. Zahlen in peano - Zahlen um, addiert diese im peano-System und wandelt das Ergebnis in eine nat. Zahl zurück.
Die Funktion hab ich geschrieben und funktioniert:
Ist ja alles nicht so schwer.
Jetzt aber sollen wir die Funktion in einen infix-Operator wandeln.
Also habe ich folgendes gemacht:
Wie muss jetzt die Funktion aussehen, damit ich sie folgendermaßen benutzen kann:
und als Ergebnis bekomme ich 7 raus?
Denn, wenn ich diese Defintion so lasse, dann erwartet er ja immer drei Argumente, was ja nich Sinn und Zweck ist.
Habe bisher folgendes probiert, was fehlgeschlagen ist:
ich bin langsam am Verzweifeln. Suche seit Montag eine vernünftige Doku für SWI-Prolog und Definition von Operatoren. Folgendes Problem:
Wir sollen zwei Zahlen mit Hilfe einer Funktion addieren. Diese Funktion wandelt die nat. Zahlen in peano - Zahlen um, addiert diese im peano-System und wandelt das Ergebnis in eine nat. Zahl zurück.
Die Funktion hab ich geschrieben und funktioniert:
add(X,Y,Z) :- num2peano(X,A),num2peano(Y,B), add3(A,B,C), peano2num(C,Z).
Ist ja alles nicht so schwer.
Jetzt aber sollen wir die Funktion in einen infix-Operator wandeln.
Also habe ich folgendes gemacht:
:- op(600, yfx, add).
Wie muss jetzt die Funktion aussehen, damit ich sie folgendermaßen benutzen kann:
?- 3 add 4.
und als Ergebnis bekomme ich 7 raus?
Denn, wenn ich diese Defintion so lasse, dann erwartet er ja immer drei Argumente, was ja nich Sinn und Zweck ist.
Habe bisher folgendes probiert, was fehlgeschlagen ist:
Z is add(X,Y) :- num2peano(X,A),num2peano(Y,B), add3(A,B,C), peano2num(C,Z).
add(X,Y) is Z :- num2peano(X,A),num2peano(Y,B), add3(A,B,C), peano2num(C,Z).
add(X,Y) = Z :- num2peano(X,A),num2peano(Y,B), add3(A,B,C), peano2num(C,Z).