• Keine Ergebnisse gefunden

Aufgabe3:MonoidaleKategorien Aufgabe2:Monaden Aufgabe1:Lektüre Hausaufgabenblatt9–WS19 KategorientheoriefürProgrammierer

N/A
N/A
Protected

Academic year: 2022

Aktie "Aufgabe3:MonoidaleKategorien Aufgabe2:Monaden Aufgabe1:Lektüre Hausaufgabenblatt9–WS19 KategorientheoriefürProgrammierer"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Mathematisch-

Naturwissenschaftliche Fakultät

Programmiersprachen Prof. Klaus Ostermann

Leitung des Seminars David Binder Ingo Skupin

Kategorientheorie für Programmierer

Hausaufgabenblatt 9 – WS19

Tübingen, 9. Januar 2020

Aufgabe 1: Lektüre

Für die kommende Woche lesen Sie bitte Kapitel 22.

Aufgabe 2: Monaden

Im Abschnitt 22.3 sind die folgenden kommutativen Diagramme für die Monadengesetze gegeben:

T3 T2

T2 T

T µ

µT µ

µ

T T2 T

T

T η

id µ

ηT

id

1. Übersetzen Sie die Diagramme in Gleichungen zwischen Haskell Funktionen, wobei Sie fürT die Listen Monade einsetzen.

2. Denken Sie sich einen Beispielwert für die linke obere Ecke im linken Diagramm aus, und vollziehen Sie nach, dass die Gleichung erfüllt wird.

3. Beweisen Sie die Monadengesetze für Listen durchequational reasoning.

Hinweis:Verwenden Sie eine geeignete (rekursive) Definition der entsprechenden Haskell Funktionen.

Aufgabe 3: Monoidale Kategorien

Im Abschnitt 22.1 werden monoidale Kategorien definiert. Zeigen Sie, dassHaskzusammen mitEithereine monoidale Kategorie bildet. Geben sie dazu die folgenden Dinge an:

1. Das neutrale Objekti

2. Die Bifunktor-Instanz vonEither(d.h. die Funktionbimap) 3. die natürlichen Transformationenαa,b,caundρa

(2)

Aufgabe 4: Monaden – ein Beispiel

Die Kategorie der punktierten Haskell-Typen, Hask besitzt als Objekte Paare (a,t) von Haskell-Typen a und Termen tvom Typ a. Die Morphismen zwischen (a,ta) und(b,tb)sind Haskellfunktionenf: a→bmit f(ta) =tb.

Betrachten Sie folgende Adjunktion von Funktoren zwischenHaskundHask:

Hask Hask

L

R

`

Wobei die Funktoren durch

La= (Either()a, Left()) R(a,t) =a

Lf=λx→case x of Rf=f

Left()→Left() Right y→Right(f y) Gegeben sind.

Leiten Sie die Monadeninstanz fürR◦Laus der Adjunktion her. Welcher Monade entspricht dies?

Seite 2/2

Referenzen

ÄHNLICHE DOKUMENTE

Der Befehl stack ghci startet dabei eine interaktive REPL die für die ersten Versuche mit Haskell

Sie können dabei annehmen, dass fmap f (xs ++ ys) = fmap f xs ++ fmap f ys gilt (mit anderen Worten: (++) ist eine natürliche Transformation von Paaren von Listen

Leitung des Seminars David Binder Ingo Skupin. Kategorientheorie

Schreiben Sie ein Programm, das eine ganze Zahl ziffernweise als Dezimalzahl (ggfs. auch zu einer beliebigen Basis) ausgibt!. Verwenden Sie zur Unterscheidung von der

¨ Ubungsblatt: ,,Schreiben Sie ein Programm, das eine ganze Zahl ziffernweise als Dezimalzahl (ggfs. auch zu einer beliebigen Basis) ausgibt.. Verwen- den Sie zur Unterscheidung von

H¨ ohere Mathematik I f¨ ur die Fachrichtung

Schmoeger: Dienstags, 10-11 Uhr (Raum 3A-25) oder nach Vereinbarung per E-Mail (christoph.schmoeger@kit.edu).. • Sprechzeiten von Sebastian Schwarz: Mittwochs, 14-16 Uhr (Raum

Leonid Chaichenets Johanna Richter, M.Sc.. Tobias