8. Funktionssymbole und zusammengesetzte Terme
Funktionssymbole, die keine Konstanten sind, d.h. deren
Stelligkeit größer-gleich 1 ist, dienen in Prolog zur
Bildung zusammengesetzter Terme. Im Gegensatz zur mathematischen
Logik und zur funktionalen Programmierung werden die
Funktionssymbole in PROLOG nicht ausgewertet. Sie sind
Termkonstruktoren.
6
telefon( name(marianne,fischer), privat(8821921), buero(557932) ).
telefon( name(hans,mueller), privat(20812), buero(423122) ).
telefon( name(peter,klein), privat(344765), buero(9712004) ).
Die folgende Sitzung bezieht sich auf
P6.
:- telefon(A, B, C).
A = name(marianne, fischer)
B = privat(8821921)
C = buero(557932) More? (;) ;
A = name(hans, mueller)
B = privat(20812)
C = buero(423122) More? (;) ;
A = name(peter, klein)
B = privat(344765)
C = buero(9712004)
yes.
:- telefon(name(_, mueller), _, buero(Nr)).
Nr = 423122 More? (;) ;
no (more) solution.
:-
Der Listenkonstruktor von PROLOG ist .
, die leere
Liste wird []
dargestellt.
Der Lesbarkeit halber können in PROLOG Listen auch wie
folgt dargestellt werden:
:- .(a, []) = [a].
yes.
:- X = .(a, []).
X = [a]
yes.
:- Y = .(a, .(b, .(c, []))), Z = [a, b, c], Y = Z.
Y = [a, b, c]
Z = [a, b, c]
yes. :-
Die leere Liste []
ist eine logische Konstante und ein
PROLOG-Atom.
Die Notation [Kopf | Rumpf]
liefert Selektoren
für Kopf und Rumpf einer Liste.
:- [K | R] = [a, b, c].
K = a
R = [b, c]
yes.
:- [K | R] = [].
no (more) solution.
:- [K | R] = [a].
K = a
R = []
yes.
:-
zum Seitenanfang
Damit weicht PROLOG sowohl von der mathematischen Logik als auch von der funktionalen Programmierung ab.