Prof. Dr. Manfred Schmidt-Schauß Fachbereich Informatik (20) Künstliche Intelligenz/Softwaretechnologie Johann Wolfgang Goethe-Universität Frankfurt am Main

Einführung in das funktionale Programmieren

Wintersemester 1995/96

Übungsblatt Nr. 8

Christmas time is here again Christmas time is here again Christmas time is here again Christmas time is here again

The Beatles

Aufgabe 1 Implementieren Sie in Gofer einen Datentypen Menge. Auf diesem Datentypen sollen folgende Operationen möglich sein:

• Mengengleichheit: zwei Mengen seien gleich, wenn sie die gleichen Elemente modulo einer Permutation enthalten. Mehrfachvorkommen von Elementen in einer Menge gibt es nicht.

• Vereinigung von zwei Mengen

• Schnitt von zwei Mengen

• Mengendifferenz

• Hinzufügen eines Elementes zu einer Menge

• Löschen eines Elements aus einer Menge

• Test, ob ein Element in einer Menge enthalten ist

Machen Sie ihren Datentypen zu einer Instanz der Klasse eq. (==) soll also überladen werden mit der Mengengleichheit. Versuchen Sie Menge auch zu einer Instanz von Num zu machen. Dann können Sie (+) mit der Mengenvereinigung, (-) mit dem Schnitt und (/) mit der Mengendifferenz überladen,

Aufgabe 2 Versuchen Sie eine Typklasse F zu definieren, für deren Instanzen eine Funktion mapp wie auf Übungsblatt Nr. 6 definiert ist.

a) In Haskell 1.2 können Sie eine solche Klasse nicht definieren. Was unterscheidet diese Typklassen von einfachen Typklassen wie EQ?

b) In Gofer gibt es die Möglichkeit, solche Klassen zu definieren. Deklarieren Sie die Datentypen von Blatt 6 als Instanzen der Klasse F.