28.03.2014 Aufrufe

Informatik 1 - Mitschriften von Klaas Ole Kürtz

Informatik 1 - Mitschriften von Klaas Ole Kürtz

Informatik 1 - Mitschriften von Klaas Ole Kürtz

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

(if (eq? t1 t2)<br />

(let ((proz (get t1 op)))<br />

(if (not (null? proz))<br />

(proz (inhalt a1)<br />

(inhalt a2))<br />

(error "Operator n. definiert")))<br />

(let ((t1->t2 (get-typanpassung t1 t2)))<br />

((t2->t1 (get-typanpassung t2 t1)))<br />

(cond ((not (null? t1->t2))<br />

(op-ausfuehren-2 op<br />

(t1->t2 a1)<br />

a2))<br />

((not (null? t2->t1))<br />

(op-ausfuehren-2 op<br />

a1<br />

(t2->t1 a2)))<br />

(else (error "keine Konvertierung<br />

möglich")))))))<br />

3.4.5 Typanpassung<br />

Umwandlung <strong>von</strong> Daten unterschiedlichen Typs (op-ausfuehren-2<br />

Typanpassung)<br />

mit<br />

• Vorteil: bei n Typen nur noch n Versionen jedes generischen Operators<br />

(statt n 2 ); allerdings bis zu n 2 Typanpassungen (besser: transistive<br />

Umwandlungen)<br />

• häufig: Objekte <strong>von</strong> Typen mit t 1 und t 2 , aber weder t 1 → t 2 noch<br />

t 2 → t 1 möglich, aber eventuell existiert ein gemeinsamer Typ t 3 mit<br />

t 1 → t 3 und t 2 → t 3 .<br />

• Daher: Betrachtung <strong>von</strong> Typhierachien, t 1 ist Untertyp <strong>von</strong> t 2 :<br />

– Jedes t 1 -Objekt ist auch t 2 -Objekt<br />

– Jede auf t 1 -Objekte anwendbare Operation ist auch auf t 1 -Objekte<br />

anwendbar<br />

– t 1 -Konzept ist Spezialfall <strong>von</strong> t 2 -Konzept<br />

• Beispiel Zahlen: N ⊆ N 0 ⊆ Z ⊆ Q ⊆ R ⊆ C; d.h. Turmstruktur, für<br />

Typanpassung sind nur noch drei Prozeduren t n → t n+1 ; Typanpassung<br />

ganzzahlig → komplex: drei Schritte (ganzzahlig zu rational zu reell zu<br />

komplex).<br />

38

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!