Prolog-Grundzüge 3: Listen
Juli 20, 2009 at 5:12 nachmittags 1 Kommentar
Eine Liste schreibt man in Prolog kommasepariert und umgeben von eckigen Klammern auf: [a,b,c] definiert eine Liste aus dem Symbolen a, b und c. Mit dem Pipezeichen | kann man eine Liste zerlegen – in das erste Element und den Rest. Man kann z.B. schreiben:
liste(EineListe, H, T) :- [H|T] = EineListe.
H und T sind in Prolog übliche Variablennamen, wenn es um das Aufsplitten von Listen geht. H steht für “Head” und T für “Tail”. Die Regel “liste” können wir vielfälig verwenden:
?- liste([a,b,c], H, T).
liefert “H=a, T=[b,c]“.
Wir können so auch feststellen, wie eine Liste aufgesplittet wird, die nur ein Element hat
?- liste([a], H, T).
liefert “H=a, T=[]“. Eine einelementige Liste besteht also aus dem Element und der leeren Liste.
Und wie sieht es mit der leeren Liste aus?
?- liste([], H, T).
liefert “false”. Die leere Liste lässt sich nicht weiter aufsplitten. Damit lässt sich die Regel nicht erfolgreich anwenden und das quittiert das Prolog-System mit “false”.
Wie wir schon im ersten Blogeintrag gesehen haben, kann man viele Regeln auch umgekehrt anwenden. Mit der Regel “liste” können wir nicht nur Listen zerlegen, wir können auch Listen damit zusammenbauen.
?- liste(L, a, [b,c]).
liefert “L=[a,b,c]“.
1 Kommentar Add your own
Kommentar verfassen
Trackback this post | Subscribe to the comments via RSS Feed
1.
Prolog-Grundzüge 4: Pattern Matching « Stefan Roock | Juli 20, 2009 um 8:10 nachmittags
[...] kann man in einer Regeldefinition z.B. den Split-Operator für Listen (den wir im letzten Blogeintrag kennen gelernt haben) verwenden und sowas [...]