next up previous contents
Nächste Seite: Andere Anwendungen Aufwärts: Regeln Vorherige Seite: ueber   Inhalt

wo_ist

Die wahrscheinlich wichtigste Funktion in einem Lager ist die Beantwortung der Frage ,,Auf welchen verdammten Stapel habe ich das Bier gelegt?``. Mit dem Prädikat wo-ist/2 ist die Antwort leicht zu finden und dem Besäufnis steht nichts mehr im Weg ;-) (ausser natürlich den Kisten, die über dem Bier liegen).
\fbox{\texttt{wo\_ist(Was, Stapel)}}


Das Prädikat wo_ist soll für jeden in der Wissensbasis (siehe S. [*]) vorhandenen Stapel prüfen, ob das erste Argument (Was) darauf liegt.
wo_ist(Was, Stapel) :-
  stapel(Stapel),
  ueber(Stapel, Was).
Zuerst wird die Variable Stapel mit einem Wert belegt (unifiziert), und zwar mit dem ersten Wert, der in einem stapel-Prädikat in der Wissensbasis auftaucht. Dann wird mit Hilfe des ueber-Prädikates bestimmt, ob das gesuchte Was auf dem betreffenden Stapel liegt. Gibt das ueber ,,yes`` zurück, so wird der Wert von Stapel zurückgegeben.
Die Eigenschaft des beschriebenen Lagers dass jeder Stapel mit einem Block mit dem Stapelbezeichner anfängt, macht dieses Prädikat so leicht zu Programmieren.

Tilman_Brock 2002-04-08