This is a hint (Hinweis) text of GUPU taken literally from the system. It's probably not very interesting reading for you.
**NEXT:To continue the guided tour go back where You came from
**NEXT:Continue reading the hints in German (...)

Dieser Hinweis ist aus der Übung im WS 1994/95 oder aus einer noch älteren Übung oder war nie Teil einer Übung und ist daher möglicherweise für spätere Übungen nicht gültig!


               Das sogenannte
          make/next/done-Interface
                  zur
         Darstellung von Sequenzen

Direkt unterstützt Prolog nur die Darstellung
von Lösungsmengen, bzw. prozedural betrachtet
nur die Darstellung von Lösungssequenzen.
Wenn man Sequenzen allgemeiner verwenden will,
verwende man die folgende Konvention:

xxx_make(...Argumente...,Zustand)
	Zustand ist hier der Anfangszustand
xxx_next(Element,Zustand0,Zustand)

xxx_done(Zustand)
	Zustand ist hier der Endzustand

Ein sehr einfaches Beispiel wären etwa Listen:

list_make(List,List).

list_next(Element,[Element|Xs],Xs).

list_done([]).

Man kann nun jederzeit die Listen durch
etwas anderes darstellen, ohne dabei die
Prädikate, die das Interface verwenden,
verändern zu müssen.

(Dieses make/next/done-Interface entspricht den
Iteratoren in prozeduralen Sprachen.)

Wenn etwas ,,für alle`` gelten soll, wenn man
eine Funktion ,,über alle`` berechnen soll
(z.B. Summe), ist es oft einfacher -- obwohl es
umständlicher aussieht -- sich einen Iterator
zu definieren. Der große Vorteil dieser Methode
liegt darin, daß fast die gesamte
Repräsentation der Daten versteckt wird. Man
kann also die Repräsentation eines z.B. Baums
verändern ohne deshalb alle Prädikate, die
diesen Baum verwenden, verändern zu müssen.

Zurück: \hinweis{init}

**NEXT:To continue the guided tour go back where You came from
**NEXT:Continue reading the hints in German