Nächste Seite:
Einleitung
Deklarative Programmierung
Vorlesung
Wintersemester 2009
Johannes Waldmann, HTWK Leipzig
Einleitung
Definition
Softwaretechnische Vorteile
Gliederung der Vorlesung
Organisation der LV
Literatur
Daten
Algebraische Datentypen
Datentyp mit mehreren Konstruktoren
Fallunterscheidung, Pattern Matching
Rekursive Datentypen
Peano-Zahlen
Wiederholung Bäume
Polymorphie
Listen
Operationen auf Listen
Beispiel Suchbäume
Funktionen
Funktionen als Daten
Ein- und mehrstellige Funktionen
Typen
Rekursion über Bäume (Beispiele)
Rekursion über Bäume (Schema)
Rekursion über Listen
Rekursionsmuster (Prinzip)
Rekursion über Listen (Übung)
Weitere Beispiele für Folds
Rose Trees
Rekursionsmuster (Peano-Zahlen)
Strukturerhaltende Folds
Programmtransformationen
Programmtransformationen (II)
Parallele Folds
Map/Reduce
Werkzeuge zum Testen
Beispiel
Quickcheck, Smallcheck, ...
Einordnung
Polymorphie/Typklassen
Einleitung
Der Typ von sort
Instanzen
Typen und Typklassen
Wörterbücher
Wörterbücher (II)
Vergleich Polymorphie
Klassen-Hierarchien
Die Klasse Show
Generische Instanzen (I)
Generische Instanzen (II)
Benutzung von Typklassen bei Smallcheck
Typgesteuertes Generieren von Werten
Generieren der Größe nach
Kombinatoren für Folgen
Anwendung I: Generierung von Bäumen
Anwendung II: geordnete Bäume
Projekte
Heapgeordente Bäume f. Autotool
Monaden
Motivation (I): Rechnen mit Maybe
Motivation (II): Rechnen mit Listen
Die Konstruktorklasse Monad
Do-Notation für Monaden
Monaden mit Null
LINQ
Aufgaben zur List-Monade
Die Zustands-Monade
Die IO-Monade
Parser als Monaden
Die Zustands-Monade
Motivation
Motivation (II)
Zustands-Transformatoren
Zustands-Transformatoren (Anwendung)
The ``real'' world: IO
IO-Beispiel
Konkretes Modell für IO: Zustand
Konkretes Modell für IO: reaktiv
IO-Übung: find
Bibliotheken und Werkzeuge
Übersicht
Haddock
Pseudozufallszahlen (I)
Pseudozufallszahlen (II)
Container-Datentypen (I)
Container-Datentypen (I)
Container: Folgen (I)
Container: Folgen (II)
Bedarfs-Auswertung
Motivation: Datenströme
Bedarfs-Auswertung, Beispiele
Bedarfsauswertung in Haskell
Strictness
Ändern der Striktheit
Bedarfsauswertung in Scala
Primzahlen
Rekursive Stream-Definitionen
Die Thue-Morse-Folge
Traversieren
Logisches Programmieren
Einleitung
Implementierung (Motivation)
Syntax
Denotationale Semantik
Operationale Semantik
Beispiele
Implementierung
Substitutionen (Definition)
Substitutionen: Produkt
Substitutionen: Ordnung
Unifikation--Definition
Unifikation--Algorithmus
Unifikation--Komplexität
Suche in Haskell
Ein einfacher Prolog-Interpreter
Global eindeutige Namen
Monaden-Transformator StateT
Ideales und Reales Prolog
Erweiterungen
Modus-Deklarationen für Prädikate
Verwendung von Modi
Theorems ...for Free
Kategorien
Kategorien (Definition I)
Kategorien (Definition II)
Kategorien: einfache Beispiele
Bsp: Kategorie, deren Objekte keine Mengen sind
Punktfreie Definitionen: injektiv
Punktfreie Definitionen: Produkt
Funktoren zwischen Kategorien
(Endo-)Funktoren in Haskell
Funktoren als Typklasse
Theorems for free
Theorems for free (II)
Hintergrund zu Monaden
Monaden
Rechenregeln für Monaden
Rechenregeln (Beispiele)
Über dieses Dokument ...
Johannes Waldmann 2011-01-18