• Keine Ergebnisse gefunden

Naturwissenschaftliche Fakultät

N/A
N/A
Protected

Academic year: 2022

Aktie "Naturwissenschaftliche Fakultät"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Mathematisch-

Naturwissenschaftliche Fakultät

Programmiersprachen und Softwaretechnik

Prof. Klaus Ostermann

Leitung des Seminars David Binder Ingo Skupin

Kategorientheorie für Programmierer

Hausaufgabenblatt 2 – SS19

Tübingen, 11. November 2019

Aufgabe 1: Lektüre

Für kommende Woche lesen Sie bitte Kapitel 6 und 7.

Aufgabe 2: Isomorphismen

Im Kapitel 5.4 haben Sie Isomorphismen kennengelernt. Zur Wiederholung: Ein Morphismusf : A → B in einer KategorieCist ein Isomorphismus gdw. ein inverser Morphismusg:B→Ain der Kategorie existiert für den gilt:

f ◦g= idB g◦f = idA

Zeigen Sie, dass der inverse Morphismus eindeutig ist. Zeigen Sie also, dass falls Morphismengundg0existie- ren für welche die obigen Gleichungen gelten, dass danng=g0folgt. (Hinweis: Lösen Sie die Aufgabe durch Angabe einer Gleichungskette der Formg=. . .=. . .=g0.)

Die Eindeutigkeit des inversen Morphismus erlaubt es uns,f−1fürgzu schreiben.

Aufgabe 3: Isomorphismen von Datentypen in Haskell

Laden Sie das Haskell-Projekt „Isomorphisms“ herunter und entpacken Sie es in ein beliebiges Verzeichnis.

Wir haben Ihnen schon den Großteil des Codes vorgegeben. Implementieren Sie Ihre Lösungen an den Stellen an denen derzeit noch „undefined“ steht.

Als Einstieg in Haskell implementieren wir einige Isomorphismen zwischen verschiedenen Datentypen. In dieser Aufgabe werden die folgenden Konzepte aus Haskell verwendet: Integer, Tuple, Either, Unit, Maybe und Listen. Es ist hilfreich zur Vorbereitung das Kapitel 6 aus dem Buch zu lesen.

Integer'Maybe Integer Integer'Either Integer Integer Integer'[()]

Integer'(Integer,Integer)

Hinweis: Integer ist der Haskell Datentyp für beliebig große oder kleine ganze Zahlen. Um die Isomorphismen anzugeben müssen Sie also ein wenig tricksen. Überlegen Sie sich ob die Isomorphismen auch für Int, den Haskell Datentyp für Maschinenzahlen mit fester Größe (32 oder 64 Bit) gilt.

Referenzen

ÄHNLICHE DOKUMENTE

Für kommende Woche lesen Sie bitte Kapitel 5 aus dem Artikel „Reason Isomorphically!“ von Ralf Hinze und Daniel

In einer Kategorie C mit terminalem Objekt 1 lässt sich die kategorielle Variante von natürlichen Zahlen defi- nieren: ein natural number object.. Programmieren Sie in Haskell

Das Projekt besteht in der Vorstellung von String Diagrammen für gewöhnliche sowie für monoidale

Laden Sie sich den Code für dieses Aufgabenblatt auf der Website der Veranstaltung herunter. Darin sollen Sie

Zeigen Sie, dass man das Initial- und das Terminalobjekt jeweils durch eine Adjunktion zwischen diesen beiden Kategorien darstellen kann.

• Setzen Sie für f den Maybe-Funktor ein und für a den Unit Typ (). Zeigen Sie, dass daraus folgt, dass genau 2 polymorphe Funktionen vom Typ x -> Maybe x existieren.. • Setzen

Das Projekt besteht in der Vorstellung von String Diagrammen für gewöhnliche sowie für monoidale Kategoren.... Ein klassisches Beispiel für eine Kategorie ist die Kategorie der

data Punkt = Punktkonstruktor Double Double data Strecke = Streckenkonstruktor Punkt Punkt Punkt, Strecke: neu definierte Typen.