• Keine Ergebnisse gefunden

Naturwissenschaftliche Fakultät

N/A
N/A
Protected

Academic year: 2022

Aktie "Naturwissenschaftliche Fakultät"

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 6 – WS19

Tübingen, 4. Dezember 2019

Aufgabe 1: Lektüre

Für die kommende Woche lesen Sie bitte Abschnitte 1 bis 4 (inklusive) des Artikels „Reason Isomorphically!“

von Ralf Hinze und Daniel W. H. James.1

Aufgabe 2: Yoneda-Lemma in Aktion

In dieser Aufgabe geht es um einen ganz besonderen Isomorphismus zwischen Typen, den wir in gemischter Mathematik-Haskell Notation so schreiben:

(forallx.(a→x)→f x)'f a

Hierbei sollen f ein Funktor undaein konkreter Typ sein. Auf der linken Seite des Isomorphismus steht der Typ der in x polymorphen Funktionen vona→xnachf x, und auf der rechten Seite des Isomorphismus steht ein konkreter Typf a.

Wir wollen diesen Isomorphismus in Haskell nachimplementieren. Damit das funktioniert benötigen wir die SpracherweiterungRankNTypes. Dann sehen die Typen der beiden Teile des Isomorphismus folgendermaßen aus:

{−# LANGUAGE RankNTypes #−}

f 1 : : F u n c t o r f => ( f o r a l l x . ( ( a −> x ) −> f x ) ) −> f a f 1 = u n d e f i n e d

f 2 : : F u n c t o r f => f a −> ( f o r a l l x . ( ( a −> x ) −> f x ) ) f 2 = u n d e f i n e d

• Implementieren Sief1undf2. Hinweis: Obwohl die Haskell-Typen kompliziert aussehen, brauchen Sie trotzdem keine neue Syntax, um f1 und f2zu implementieren. Sobald Sie eine Lösungsidee haben, probieren Sie es einfach aus. Der Compiler erkennt die richtige Lösung automatisch an.

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

• Setzen Sie fürf den Listen-Funktor ein und füraden TypInteger. Wie interpretieren Sie den Isomor- phismus, der dabei herauskommt?

1Für manche ist eventuell auch dieser nlab-Artikel hilfreich, indem die „High-Level“ Idee des Yoneda-Lemmas erklärt wird (man kann hier im Textspaceeinfach immer durchobjectersetzen). Interessant sind hier vor allem die Abschnitte 2–4:

https://ncatlab.org/nlab/show/motivation+for+sheaves%2C+cohomology+and+higher+stacks#maps_between_generalized_

spaces

(2)

• Finden Sie eine interessante Kombination von einem Funktor und Typ den Sie kennen, setzen Sie die beiden in obige Gleichung ein, und berichten Sie uns Ihre Beobachtung :)

Aufgabe 3: Isomorphismen

SeienC,DundIKategorien undF:C → Dein volltreuer (=fully faithful) Funktor.

1. Zeigen Sie, dass der PostkompositionsfunktorF◦:CI → DIzwischen den beiden FunktorkategorienCI undDI, definiert durchF◦(G) =F◦Gauf Objekten undF◦(η) =F ηauf Morphismen, ebenfalls volltreu ist.

2. Geben Sie einen Funktor an, der voll ist, aber keine Isomorphismen reflektiert.

3. Geben Sie einen Funktor an, der treu ist, aber keine Isomorphismen reflektiert.

Seite 2/2

Referenzen

ÄHNLICHE DOKUMENTE

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 zu Listen). Aufgabe

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