EMZETT.
Login

Kurz: > Achtung: Prolog antwortet bei unbekannten Prädikaten mit Unknown procedure. Prüfe Tippfehler und die Stelligkeit (name/Anzahl).

Teil des Kurses Prolog

Kapitel 8 von 8 im Kurs Prolog. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Wichtige Prädikate

PrädikatBedeutung
append(A, B, C)C = A ++ B
member(X, L)X ist in L
length(L, N)Länge
reverse(L, R)Umkehren
nth0/nth1Element nach Index
msort/sort/predsortSortieren
sum_list/max_listSumme/Maximum
findall/bagof/setofLösungen sammeln
maplist/foldlHigher-Order
atom_codes/atom_charsAtom ↔ Zeichen
assertz/retractFakten ändern
format/2formatierte Ausgabe
between/3Zahlenbereich

Kleine Beispiele

main :-
    sort(0, @>=, [3, 1, 2], A), writeln(A),
    predsort([O, X, Y]>>(compare(O, X, Y)), [c, a, b], B), writeln(B),
    sumlist([1, 2, 3], S), writeln(S),
    nth1(2, [a, b, c], E), writeln(E),
    sumlist([], Null), writeln(Null),
    last([1, 2, 3], L), writeln(L),
    sum_list([0.1, 0.2], F), writeln(F),
    string_code(1, "A", C), writeln(C),
    char_code(Z, 66), writeln(Z),
    succ(3, N), writeln(N),
    plus(2, P, 5), writeln(P),
    tab(2), writeln(ende).

Ausgabe:

[3,2,1]
[a,b,c]
6
b
0
3
0.30000000000000004
65
B
4
3
  ende

Typische Fehler

main :- X is Y + 1, writeln(X).

Fehlermeldung:

Arguments are not sufficiently instantiated
main :- X is foo + 1, writeln(X).

Fehlermeldung:

Arithmetic: `foo/0' is not a function

Achtung

Prolog antwortet bei unbekannten Prädikaten mit Unknown procedure. Prüfe Tippfehler und die Stelligkeit (name/Anzahl).

Weiterführende Quellen

  • swi-prolog.org/pldoc: Handbuch und Bibliotheken
  • „Learn Prolog Now!“ (kostenlos online)
  • „The Art of Prolog“ (Sterling, Shapiro)
  • „The Power of Prolog“ (Markus Triska)

Merke

  • Prolog: Fakten, Regeln, Anfragen; Unifikation und Backtracking
  • Prädikate arbeiten relational (in mehrere Richtungen)
  • Cut sparsam, findall zum Sammeln, clpfd für Constraints

Übungsaufgabe

Schreibe ein kleines Expertensystem: Tiere bestimmen anhand von Eigenschaften.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Module, Ein-/Ausgabe und Ökosystem

Alle Kapitel: Prolog im Überblick