You are not logged in.

  • Login

1

Thursday, May 31st 2007, 1:38pm

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:

Quoted

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:

Quoted

:- op(600, yfx, add).

Wie muss jetzt die Funktion aussehen, damit ich sie folgendermaßen benutzen kann:

Quoted

?- 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:

Quoted

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

Social bookmarks