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}