• 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 10 – WS19

Tübingen, 16. Januar 2020

Aufgabe 1: Lektüre

Für die nächste Sitzung lesen Sie bitte Kapitel 24 im Buch (ohne das Unterkapitel 24.6).

Aufgabe 2: Natural Number Object (NNO)

In einer KategorieCmit terminalem Objekt 1lässt sich die kategorielle Variante von natürlichen Zahlen defi- nieren: ein natural number object. (Wie immer gilt, dass nicht jede Kategorie natural number objects besitzt.)

Ein natural number object ist gegeben durch ein ObjektNund Morphismenz: 1→Nsowies:N→Nmit folgender universeller Eigenschaft: Für jedes ObjektAund Morphismenq : 1→ A undf : A → Aexistiert exakt ein Morphismusc:N→Asodass das folgende Diagramm kommutiert:

1 N N

A A

z

q

s

c c

f

1. Programmieren Sie in Haskell die Funktionc, welchequndf als Argumente erhält.

2. Wie müssen A, qund f inHaskaussehen, damitc die Funktion ist, welche eine Zahln auf ihre unär kodierte Darstellung abbildet?

3. Die im obigen Diagramm enthaltene Information lässt sich in einer Kategorie mit Koprodukten auch an- ders anordnen. Übersetzen Sie das obige Diagramm in folgendes Schema und tragen die fehlenden Informationen nach.

+ +

Aufgabe 3: Programmieren mit Catamorphismen

Gegeben sei der folgende Datentyp für einfache arithmetische Ausdrücke.

(2)

data ExprF e = L i t I n t

| Var S t r i n g

| Add e e

| M u l t e e type E x p r e s s i o n = F i x ExprF zusammen mit

type Env = [ (String,I n t) ]

lookupEnv : : Env −> S t r i n g −> Maybe I n t lookupEnv [ ] _ = Nothing

lookupEnv ( ( x , v ) : xs ) s = i f s == x then Just v

else lookupEnv xs s

Geben Sie eine Funktor-Instanz fürExprFan und definieren Sie eineeval-, eine pretty- sowie einesubst- Funktion fürExpression mithilfe voncata :: (ExprF a -> a) -> Expression -> a. Dabei werteteval ::

Env -> Expression -> Maybe Inteinen Ausdruck aus,pretty :: Expression -> Intpretty-printet einen Ausdruck und subst :: String -> Int -> Expression -> Expressionersetzt innerhalb eines Ausdrucks alle Vorkommen einer Variable durch einen Wert.

Aufgabe 4: Bäume als F-Algebren

Der induktive Typ von Listen mit Elementen inaist in Haskell durch folgende Definition gegeben:

data L i s t F a r = Empty | Cons a r type L i s t a = F i x ( L i s t F a )

Der FunktorListFlässt sich formal auch schreiben alsFa(r) = 1+(a×r). Anstelle vonFix (ListF a)benutzt man die alternative Schreibweiseµr.Fa(r).

Geben Sie zwei Funktoren Ba(r) und Ka(r) an, sodass die initialen Ba(r)- und Ka(r)-Algebren gerade jeweils Binärbäumen mit blatt- beziehungsweise knotenorienterter Speicherung entsprechen.

Seite 2/2

Referenzen

ÄHNLICHE DOKUMENTE

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

Hausaufgabenblatt 3 – WS19 Tübingen, 13. 5.4 im Buch) und verwendet nur die universelle Eigenschaft der beiden Produkte. Bonus: Wie verhält es sich bei

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

1 Für manche ist eventuell auch dieser nlab-Artikel hilfreich, indem die „High-Level“ Idee des Yoneda-Lemmas erklärt wird (man kann hier im Text space einfach immer durch

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

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

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