Fortgeschrittene Funktionale Programmierung
Sommersemester 2020
Applikative Funktoren, Monaden und Ein- und Ausgabe in Haskell
Prof. Dr. David Sabel
LFE Theoretische Informatik
Letzte ¨Anderung der Folien: 22. Juli 2020Die Folien basieren zum Teil auf Material von Dr. Steffen Jost, dem an dieser Stelle f¨ur die Verwendungserlaubnis herzlich gedankt sei.
Ziele des Kapitels
Was sind Applikative Funktoren?
Was sind Monaden / Monadische Programmierung?
Zustandsbasiertes Programmieren mit Monaden allgemein Programmierung: Ein- und Ausgabe in Haskell
Monad-Transformer:
” Vereinigung“ mehrerer Monaden Dabei: Anwendungen f¨ ur Monaden
TCS
|
06 Applikative Funktoren und Monaden
|
SoSe 2020 2/140 Applicative Monaden Zustandsmonade I/O MonadTrans Anwendungen
Monadisches Programmieren
Monadisches Programmieren
= Strukturierungsmethode, um Berechnungen zu komponieren Oft: um sequentiell ablaufende Programme zu implementieren
Haskell verwendet u.a. Monaden zur Programmierung von Ein- und Ausgabe Begriff Monade entstammt der Kategorientheorie
(Teilgebiet der Mathematik: Morphismen, Isomorphismen,. . . ) F¨ ur die Programmierung:
Monade ist ein Typkonstruktor + Operationen, wobei die sog. monadischen Gesetze gelten
In Haskell: Umsetzung von Monaden durch die Typklasse Monad.
Jeder Datentyp, der Instanz der Klasse Monad ist und die Gesetze erf¨ ullt, ist eine Monade
TCS
|
06 Applikative Funktoren und Monaden
|
SoSe 2020 3/140 Applicative Monaden Zustandsmonade I/O MonadTrans Anwendungen
Aktuelle Klassenstruktur
Functor
Applicative
Monad
Daher: Wir besch¨ aftigen uns erstmal mit Applicative
TCS
|
06 Applikative Funktoren und Monaden
|
SoSe 2020 4/140 Applicative Monaden Zustandsmonade I/O MonadTrans Anwendungen