Home
 

Blatt 4

Blatt 4

1.
Tupel (z.B. geordnete Paare, Tripel, Quadrupel, ...) sind wie Listen für alle möglichen Elementtypen definiert, haben aber jeweils feste Länge und können auch Elementtypen mischen, also die Aufgabe von records in anderen Sprachen übernehmen. Notation (für Typ und Elemente): runde Klammern, also z.B.:
 ()              - nix drin !!

(4711) - wird mit Zahl 4711 identifiziert
(-1.0,1.0)
(sin,cos)
(sin 0,cos 0)
("Franz Gans", (30,"Okt",1950), "Salzburg")
(a)
Stellen Sie den Typ dieser Beispiele fest.
(b)
Für Paare gibt es vordefinierte Projektionsfunktionen fst und snd auf die beiden Komponenten; definieren Sie entsprechende Funktionen für Tripel.
(c)
Die explizite Angabe von Tupeltypen ist oft mühsam (vgl. a)). Haskell erlaubt die Einführung von Typsynonymen, d.h. benutzerdefinierte Namen für vorhandene Typkonstruktionen. (Das ist wohlgemerkt die Einführung einer bequemeren Bezeichnung und nicht eines neuen Typs!!)

Beispiel: type Point = (Float,Float) ; type Rectangle = Point,Point,Point,Point).

Geben Sie Definitionen für typische Datensätze wie z.B. für Personen oder Bibliotheksbücher zusammen mit einem Typsynonym, Projektionsfunktionen auf Komponenten und ein paar weitere sinnvolle Funktionen (z.B. aktuelles Alter einer Person, Anschriftänderung).

2.
Sind zu einer Funktion f zwei Argumentwerte a und b mit f(a) < 0 < f(b) bekannt, so kann man eine Nullstelle durch wiederholte Halbierung des Intervalls suchen. Definieren Sie eine entsprechende Funktion unter Verwendung der ``until''-Funktion (Vorlesung oder Prelude) sowie von Float-Paaren für Intervalle.
3.
Brüche lassen sich als Int-Paare darstellen. Geben Sie Definitionen von Funktionen für die vier Grundrechenarten für Brüche sowie eine Normalisierungsfunktion, die einen Bruch auf die übliche gekürzte Form mit positivem Nenner bringt.

nextnextupuppreviouspreviouscontentscontents
Next:Blatt 5Up:ÜbungenPrevious:Blatt 3
Ronald Blaschke
1998-04-19