• Keine Ergebnisse gefunden

Aufgabe3:Monaden—Programmieraufgabe Aufgabe2:Monaden— do -Notation Aufgabe1:Lektüre Hausaufgabenblatt8–WS19 KategorientheoriefürProgrammierer

N/A
N/A
Protected

Academic year: 2022

Aktie "Aufgabe3:Monaden—Programmieraufgabe Aufgabe2:Monaden— do -Notation Aufgabe1:Lektüre Hausaufgabenblatt8–WS19 KategorientheoriefürProgrammierer"

Copied!
1
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 8 – WS19

Tübingen, 19. Dezember 2019

Aufgabe 1: Lektüre

Für die kommende Woche lesen Sie bitte Kapitel 20 und 21 und schicken Ihre Fragen bis Dienstag Abend an uns.

Aufgabe 2: Monaden — do-Notation

Gegeben sei folgendes Programm.

do g r e e t i n g <− [ " H e l l o " , " Hi " , " Dear " ] number <− [ 0 , 4 2 ]

s e p a r a t o r <− [ " " , " , " ]

r e t u r n ( g r e e t i n g ++ s e p a r a t o r ++ show number )

Führen Sie Desugaring für dieses Programm durch, sodass die do-Notation vollständig durch >>=ersetzt wird.

Aufgabe 3: Monaden — Programmieraufgabe

Bearbeiten Sie die Aufgaben im beigefügten Code in der Datei „Eval.hs“. Sie können Ihre Implementierung mit

„stack exec monads“ testen.

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

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.. Beweisen Sie die Monadengesetze für

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)...

Leitung des Seminars David Binder Ingo Skupin. Kategorientheorie

Definieren Sie einen Typen Odd der lediglich einen Wert vom Typ Integer enthält, sowie eine Arbitrary Instanz für diesen Typen, die nur Odd Werte generiert, in denen sich ein

type State = M.Map String Double eval :: Expr → Res State Double eval (Var i ) = get (M..

I In Haskell: durch mehrere Typklassen definierte Operationen mit bestimmten Eigenschaften. I In Scala: ein Typ mit