Daten fliessen via Parameter in eine Regel hinein oder aus ihr hinaus. Eine Parameterposition, die vor der Regelanwendung eine instanziierte Variable erwartet, ist ein Eingabeparameter (Modus „+“). Wo eine zuvor nicht instanziierte Variable erwartet wird, handelt es sich um einen Ausgabeparameter (Modus „-“). Kann ein Parameter für beides verwendet werden, weist man den Modus „?“ zu.
Die Unifikation dient als Konstruktor (Aufbau von Datenstrukturen) und trägt so zum Datenfluss bei.
Die deklarative Semantik basiert auf der Formulierung von Bedingungen. Wie und in welcher Reihenfolge die Bedingungen erfüllt werden sollen, wird nicht spezifiziert: „Es ist Schwimmbad-Wetter falls die Sonne scheint und es warm“ ist. Es ist egal, ob ich erst auf das Thermometer und dann in den Himmel schaue oder umgekehrt.
Die prozedurale Semantik definiert eine Reihenfolge von auszuführenden Schritten: „Um herauszufinden, ob es Schwimmbadwetter ist, schaue zuerst auf das Thermometer und vergleiche die angezeigte Temperatur mit 25, dann sieh’ hoch, ob die Sonne scheint.“
Prolog kombiniert Elemente aus beiden Welten.
Es gibt drei wesentliche Strukturierungsmerkmale des Kontrollflusses:
Merkmal |
Implementierung in Prolog |
Beispiel |
Abstraktion (Kapselung) |
Prädikatsdefinition |
schoen :- sonnig, warm nun kann ich die Kurzform „schoen“ verwenden, wenn immer ich „sonnig und warm“ ausdrücken will. |
Sequenz |
Konjugation („,“) |
sonnig, warm erst wird „sonnig“ geprüft, dann „warm“. |
Alternation |
mehrfache Klauseln oder Disjunktion („;“) |
farbig :- rot. farbig :- blau; gelb. Um „farbig“ zu beweisen, muss nur eine der drei Alternativen wahr sein. |
Die Unifikation hat eine zweite Funktion als Filter (pattern matching) und steuert somit den Kontrollfluss über die Auswahl von passenden Regeln.
Der Cut („!“) ermöglicht das Abschneiden unnötiger Äste des Beweisbaumes.
call ruft versucht sein Argument zu beweisen (v.a. im Falle von Variablen sinnvoll)
fail ist ein Prädikat, dass nie erfüllt werden kann (z.B. zwecks Ausgabe aller alternativen Lösungen).
Kommentar von Simon