Prolog-Grundzüge 3: Listen

July 20, 2009 at 5:12 pm 1 comment


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]”.

Entry filed under: 1. Tags: .

Prolog-Grundzüge 2: Das Prolog-System Prolog-Grundzüge 4: Pattern Matching

1 Comment Add your own

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed



%d bloggers like this: