2016-05-19 6 views
0

in Prolog, wie soll ich fortfahren, wenn ich zwei Argumente hinzufügen möchte, auch wenn man keine Zahl ist. Wenn zum Beispiel add2args(1,2,R). eingegeben wird, sollte das Ergebnis R = 3 lauten. Wenn ich add2args(1,x,R). eingeben, sollte das Ergebnis R=1+x sein.Prolog - Hinzufügen von zwei Argumenten, auch wenn es keine Nummer ist

Bisher habe ich dies:

add_2args(X,Y,R):- number(X),number(Y), R is (X+Y). 

Welche mir erlaubt, zwei Zahlen zu addieren, aber ich weiß nicht, wie ich es etwas anderes zu drucken als wahr bekommen und falsch, wenn X und Y sind nicht Nummern, die normal ist, seit number(X) prüft, ob X eine Nummer ist oder nicht. Welche andere Regel muss ich hinzufügen, um das gewünschte Ergebnis zu erhalten?

Antwort

0

Prolog wird einen Ausdruck symbolisch (als Prolog-Ausdruck) anzeigen, wenn er nicht explizit mit etwas wie is/2 ausgewertet wird. So ist der einfachste Weg, dies in Ihrem Fall zu tun, die folgend wäre: bewerten

add_2args(X, Y, R) :- 
    ( number(X), number(Y) % Both X and Y are numbers, then... 
    -> R is X + Y   % Evaluate the expression 
    ; R = X + Y    % Else, just unify R with the expression 
    ). 

Die R = X + Y nicht den Ausdruck, sondern nur den Begriff X + Y mit R vereinen. Dies ist auch eine schöne "Prolog Anfängeranleitung" Illustration für den Unterschied zwischen =/2 und is/2. Wenn Sie beispielsweise R = 2 + 3 geschrieben haben, dann haben Sie write(R)2 + 3, nicht 5. Sie könnten anschließend tun, , die dann den Ausdruck R auswerten und Result = 5 ergeben würde.

| ?- R = 2 + 3, Result is R. 

R = 2+3 
Result = 5 

yes 
| ?- 
+0

Vielen Dank für die Erklärung – Streamline

+0

@Streamline wenn ich Ihre Frage beantwortet, indem Sie auf das große Häkchen auf der linken Seite die Antwort akzeptieren. :) – lurker

+0

Fertig! Danke noch einmal :) – Streamline

Verwandte Themen