Zurückgeben eines Wertes aus einer Funktion in prolog
Wie können wir die Rückgabe eines Wertes aus einem prolog-Funktion mit nur einem argument? Ex. leaf(V) ist eine Funktion sollte einen Wert zurückgeben V und es wird aufgerufen, aus einem funktionsbaum(leav(V), Summe)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Prolog nicht "funktioniert", es hat "Prädikate". I. e. Sie sind eine Beschreibung einer Beziehung zwischen Begriffen. Ein Prädikat kann nur bewerten Sie "true" oder "false".
Jedoch die Art und Weise ein Prädikat true oder false ist, durch Vereinheitlichung, d.h. prolog versucht, um Instanzen zu suchen, die für die Variablen aus der bestehenden knowledge base (z.B. dein source code, damit das Prädikat wahr ist.
Daher können Sie trick ein prolog-Prädikat der form Pred(In, Out), so dass für eine gegebene "Im" prolog zu vereinheitlichen konnte "Out" mit dem richtigen Wert, die macht, die das Prädikat wahr ist.
pers_inf(anders, 6). <newline> add(PredVal, CurrVal, NewVal):- NewVal is PredVal + CurrVal.
würde ich dieadd
Prädikat wie folgt:add(pers_inf(_, X), 5, Y).
ich dachte mir, dass das erste argument der add-Prädikat vereinen würde X mit 6, dann die Summe mit 5, und zu vereinheitlichen Y mit diesem Wert, aber es ist nicht, wie ich unter VORBEHALT. Ich sehe bei der Ablaufverfolgung, dass es versucht, die Summe derpers_inf
Prädikat mit 5, das ist eindeutig ein problem.pers_inf(_, X), add(X, 6, Y)
. Und man könnte hinzufügen, eine Klausel zuadd
Umgang mitpers_inf
Argumente speziell.Prolog nicht über die Funktion Auswertung, so haben Sie zu vertreten, Ihre Funktion als eine relation
Zum Beispiel für Quadratur:
Die Funktion "Symbole" in Prolog sind rein denotational: Sie sind für die Konstruktion von Begriffen:
Den oben genannten Begriff hat keine inhärente Bedeutung oder resolvability. Es ist einfach ein Begriff, genauer: ein Baum