Was ist der Unterschied zwischen == und = in Prolog?
Kann mir jemand erklären den Unterschied zwischen den ==
und die =
operator in Prolog? Ich weiß, dass X = Y
bedeutet, dass X vereinigt mit Y ist wahr, wenn X bereits vereint mit Y oder gemacht werden kann, aber ich verstehe nicht, wie diese unterscheidet sich von ==
.
Follow-up: (siehe Akzeptierte Antwort) Sinn macht. Doch noch eine Frage, gibt es überhaupt eine situation, wo X \= Y
wahr ist und X \== Y
ist falsch (oder Umgekehrt)? Das heißt, ist X \= Y
test, wenn Sie sich nicht einig sind, oder wenn Sie derzeit keine einheitliche?
InformationsquelleAutor der Frage JohnS | 2011-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den = "- operator" - Prolog ist eigentlich ein Prädikat (mit infix-notation) =/2 das gelingt, wenn die beiden Begriffe vereinheitlicht werden. So
X = 2
oder2 = X
Menge, um die gleiche Sache, ein Ziel zu vereinenX
mit 2.Des = = "- operator" unterscheidet, dass Sie gelingt nur, wenn die beiden Begriffe sind schon identisch, ohne weitere Einigung. So
X == 2
ist nur wahr, wenn die variableX
hatte zuvor zugewiesen wurde, den Wert 2.Hinzugefügt: Es ist interessant, durch die Arbeit, was passiert, wenn "nicht" vermischt wird, in diese Ziele, die pro-Kommentar von JohnS unten. Sehen die schön Beispiele in der Amzis! Prolog-Dokumentation.
\=
bedeutet, dass die beiden Begriffe nicht einheitlich sein, D. H., dass die Einigung scheitert. Wie bei allen Anwendungen der negation als scheitern, "unified" nicht (und kann nicht) Ergebnis einer Einigung zwischen den Bedingungen.\==
bedeutet, dass die beiden Begriffe sind nicht identisch. Auch hier keine Einigung erfolgt, selbst wenn dies gelingt.Endlich darüber nachdenken, was
not(not(X = Y))
tun. Das innere Tor ist erfolgreich, wenn X und Y (das können beliebige Begriffe) kann einheitlich sein, und so wird die doppelte negation. Jedoch wickelt das innere Ziel innerhalb der doppelten negation produziert ein Ziel, das gelingt wenn die beiden Begriffe können einheitlich sein aber ohne verbindende dieser Begriffe.Es ist Links als übung für den Leser, darüber nachzudenken, ob
not(not(X == Y))
hat ähnliche Dienstprogramm.InformationsquelleAutor der Antwort hardmath
= steht für die Vereinigung, es bedeutet, dass Sie versuchen wird zur Bindung der freien Variablen, deren Anpassung an die anderen Mitglieder.
zum Beispiel :
A = h(X) Eine in dem term h(X), wenn Eine frei ist, und schlägt fehl, wenn Einer gebunden ist, zu sagen 5.
die Einheit ist toll, weil Sie tun können, pattern-matching, zum Beispiel :
geben Sie
weil prolog versucht, X-Y:Z passen Sie den Ausdruck-5-[a, b, c]:y.
Es ist sehr nützlich.
Beachten Sie, dass die Vereinigung wird verwendet, wenn Sie anrufen, ein Prädikat und einige Techniken erfolgen :
sagen, Sie wollen wieder den Wert des Akkumulators in ein Rekursives Prädikat, das können Sie tun :
die erste Klausel wird versuchen, die Vereinheitlichung der Dritten und zweiten argument, also, wenn der Dritte ist frei, es hat jetzt den gleichen Wert wie die zweiten.
== Gleichheit, ohne zu versuchen, das binden der Variablen.
InformationsquelleAutor der Antwort m09