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!
Schnellsiedekurs zur Verwendung des partiellen Evaluators Mixtus (© SICS 1991) Kurzfassung: Pro Beispiel können Sie 1 × :- pe mein_privates_Ziel(...). schreiben. Das bedeutet: Es soll ein effizienteres Programm erzeugt werden, das nur speziell für mein_privates_Ziel/n funktioniert. z.B. Beispiel 83: mi_list([]). mi_list([G|Gs]) :- klause(G,Bs), mi_list(Bs), mi_list(Gs). # klause(endlos,[endlos]). klause(member(E,[E|_Es]),[]). klause(member(E,[_E|Es]),[member(E,Es]). mein_member(E,Es) :- mi_list([member(E,Es)]). Anstatt sich mit dieser ineffizienten Variante für mein_member/2 zu begnügen, sagen Sie doch, daß Sie eine effizientere Variante wünschen: :- pe mein_member(E,Es). Das bedeutet: Es soll das sehr allgemein gehaltene Programm für das Ziel mein_member/2 spezialisiert werden. *** Bitte machen Sie aber stets nur eine *** solche Anfrage pro Beispiel!!!!!!! Als Antwort erscheint nun AM ENDE des aktuellen Beispiels ein (hoffentlich) effizienteres Programm, das aber mittels @@@ auskommentiert ist. Sie können nun dieses verbesserte Programm betrachten. Es enthält auch einige (sporadisch gehaltene) Kommentare, woraus es entstanden ist. Wenn Sie nun das ursprüngliche Programm abändern, können Sie nach jedem DO die entsprechende Änderung auch im optimierten Programm sehen. *** Solange das neue Programm hinter den @@@ *** ist, wird es nicht geladen und bei jedem *** DO gelöscht, bzw. neu generiert. Zu beachten ist, daß als erste Regel, das alte Prädikat neu definiert wird. Wenn Sie die ursprüngliche und die optimierte Variante zugleich verwenden wollen, müssen Sie diese Regel löschen und alle Schneckennudeln entfernen. 1. Löschen Sie die Regel, die mein_member/2 erneut definiert. 2. Gehen Sie in die Zeile danach und drücken Sie C-cC-r. Dadurch verschwinden die @@@ am Anfang der Zeile. 3. Kommentieren Sie das pe wieder aus!! Nun können Sie DO drücken und haben dann beide Versionen geladen. Da Mixtus immer neue Namen generiert (durch Anhängen laufender Zahlen) sollte es zu keinen Namenskonflikten kommen. Verwenden Sie selbst aber lieber keine Prädikate mit Zahlen am Ende. Probieren Sie auch in alten Beispielen aus, was mixtus aus ihren Programmen macht! \hinweis{mixtusproblem} \hinweis{longpe} \hinweis{pe} Zurück: \hinweis{init}