Operator definieren in Prolog

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Operator definieren in Prolog

    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:
    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).