Typ-basiertes Programmieren und Schließen in Funktionalen Sprachen, Wintersemester 2009/10
Einträge im Vorlesungsverzeichnis:
Inhaltliche Zusammenfassung:
Stark getypte Programmiersprachen spielen eine zunehmend wichtige Rolle
in der Praxis, unter Anderem da Typen schon bei der Konstruktion von
Programmen bestimmte Arten von Fehlern ausschließen können. Typen dienen
der Dokumentation und partiellen Spezifikation von Funktionalität und
ermöglichen die sichere Wiederverwendung von Programmkomponenten.
Darüber hinaus können mittels eines hinreichend ausdrucksstarken
Typsystems Aussagen zum Programmverhalten jenseits der bloßen
Passfähigkeit von Daten getroffen werden.
Ziel der Vorlesung ist es, solche Techniken an Hand der funktionalen
Sprache Haskell zu beleuchten. Es wird darum gehen, geeignete
Abstraktionsmechanismen (die mittlerweile auch Eingang in
Mainstream-Sprachen wie Java finden) vorzustellen, teilweise formal zu
untersuchen und auf konkrete Problemstellungen anzuwenden.
Beispielanwendungen werden automatische Programmtransformationen sowie
Korrektheitsbeweise für Algorithmen sein.
Voraussetzung:
Organisation:
- 22.10.09, 13:15-14:45 Uhr, Vorlesung, in Raum A207
- 28.10.09, 13:30-15:00 Uhr, Übung, in Raum A106
- 29.10.09, 10:15-11:45 Uhr, Vorlesung, in Raum A301
- 05.11.09, 10:15-11:45 Uhr, Vorlesung, in Raum A301
- 11.11.09, 13:30-15:00 Uhr, Übung, in Raum A7b
- 12.11.09, 10:15-11:45 Uhr, Vorlesung, in Raum A301
- 19.11.09, 10:15-11:45 Uhr, Vorlesung, in Raum A301
- 25.11.09, 13:30-15:00 Uhr, Übung, in Raum A7b
- 26.11.09, 10:15-11:45 Uhr, Vorlesung, in Raum A301
- 03.12.09, 10:15-11:45 Uhr, Übung, in Raum A301
- 09.12.09, 13:30-15:00 Uhr, Übung, in Raum A7b
- 10.12.09, 10:15-11:45 Uhr, Vorlesung, in Raum A301
- 16.12.09, 13:30-15:00 Uhr, Übung, in Raum A7b
- 17.12.09, 10:45-11:45 Uhr, Vorlesung, in Raum A301
- 07.01.10, 10:45-11:45 Uhr, Vorlesung, in Raum A301
- 13.01.10, 13:00-14:30 Uhr, Vorträge, in Raum A7b
- 14.01.10, 10:45-11:45 Uhr, Übung, in Raum A301
- 21.01.10, 10:45-11:45 Uhr, Vorlesung, in Raum A301
- 27.01.10, 13:30-15:00 Uhr, Übung, in Raum A7b
- 28.01.10, 10:45-11:45 Uhr, Vorlesung, in Raum A301
- 03.02.10, 13:30-15:00 Uhr, Vorlesung, in Raum A7b
- 09.02.10, mündliche Prüfungen
Folien:
Übungsblätter:
"Skript":
Referenzen:
- Programming in Haskell, book by Graham Hutton
- Introduction to Functional Programming using Haskell, book by Richard Bird
- The Haskell School of Expression, book by Paul Hudak
- Towards a theory of type structure, article by John Reynolds at Colloque sur la Programmation 1974
- Update Semantics of Relational Views, article by Francois Bancilhon and Nicolas Spyratos in ACM Transactions on Database Systems, 1981
- Types, Abstraction and Parametric Polymorphism, article by John Reynolds at Information Processing 1983
- Theorems for Free!, article by Philip Wadler at Functional Programming Languages and Computer Architecture 1989
- Deforestation: Transforming Programs to Eliminate Trees, article by Philip Wadler in Theoretical Computer Science, 1990
- A Short Cut to Deforestation, article by Andy Gill et al. at Functional Programming Languages and Computer Architecture 1993
- Parametricity and Unboxing with Unpointed Types, article by John Launchbury and Ross Paterson at European Symposium on Programming 1996
- Proofs About Lists Using Ellipsis, article by Alan Bundy and Julian Richardson at Logic Programming and Automated Reasoning 1999
- Logical Abstractions in Haskell, article by Nancy A. Day et al. at Haskell Workshop 1999
- A semantics for imprecise exceptions, article by Simon Peyton Jones et al. at Programming Language Design and Implementation 1999
- Shortcut Fusion for Accumulating Parameters & zip-like Functions, article by Josef Svenningsson at International Conference on Functional Programming 2002
- Free Theorems in the Presence of seq, article by Patricia Johann and Janis Voigtländer at Principles of Programming Languages 2004
- A Shortcut Fusion Rule for Circular Program Calculation, article by Joao Paulo Fernandes et al. at Haskell Workshop 2007
- Proving Properties about Lists Using Containers, article by Rawle Prince et al. at Functional and Logic Programming 2008
- Much Ado about Two: A Pearl on Parallel Prefix Computation, article by Janis Voigtländer at Principles of Programming Languages 2008
- Bidirectionalization for Free!, article by Janis Voigtländer at Principles of Programming Languages 2009
- Parametricity for Haskell with Imprecise Error Semantics, article by Florian Stenger and Janis Voigtländer at Typed Lambda Calculi and Applications 2009
- Taming Selective Strictness, article by Daniel Seidel and Janis Voigtländer at Arbeitstagung Programmiersprachen 2009
- Automatically Generating Counterexamples to Naive Free Theorems, article by Daniel Seidel and Janis Voigtländer at Functional and Logic Programming 2010
Online-Ressourcen:
- Haskell homepage
- Functional Programming Fundamentals, online lectures by Erik Meijer (based on Graham Hutton's book): chapter 1, chapter 2, chapter 3, chapter 4, chapter 5, chapter 6, chapter 7, chapter 8, chapter 9, chapter 10, chapter 11, chapter 12, chapter 13
- Real World Haskell, book by Bryan O'Sullivan, Don Stewart, and John Goerzen, freely available online
- Learn You a Haskell for Great Good!, by Miran Lipovaca
- Haskell Kurs, deutsch, von Ralf Hinze
- Automatic generation of free theorems, our online generator (implementation described here)
- Bidirectionalization for Free!, web interface to the library developed in the article of same name
- Automatically Generating Counterexamples to Naive Free Theorems, web interface to the tool described in the article of same name
- Taming Selective Strictness, web interface to the tool described in the article of same name
Zuletzt geändert: Februar 2010, Janis Voigtlaender.