Exploring typed language design in Haskell
Prologue: This lecture series was first presented to MSc
students and PhD at Università degli Studi dell'Aquila in January 2010,
when the speaker, Ralf Lämmel, was hosted by the research team of
Prof. Alfonso Pierantonio.
Tutorial (lecture series)
Acknowledgement
The authors of the tutorial acknowledge collaboration with other
parties on subject matter covered. Specifically, we are grateful for
joint work with Klaus Ostermann, Simon Peyton Jones, Keean Schupke,
and Chung-chieh Shan. We are grateful to all the PhD students from the
CS department at Università
degli Studi dell'Aquila who served as "guinea pigs" for (parts of)
the lecture series in January 2010.
Abstract
The tutorial furnishes the idea that Haskell is a capable sandbox for
programming language researchers and engineers---not so much in the
obvious sense of Haskell as a continuously evolving language, but
rather in the sense of modelling or embedding typed language concepts
in Haskell. The tutorial specifically emphasizes the role of Haskell's
type classes in this context. At the heart of the tutorial lies the
discipline of type-level programming which enables applications such
as embedding extensible records or an object system in Haskell. The
tutorial presents different options for type-level programming:
multi-parameter type classes with and without overlapping instances;
indexed type families, possibly with associated types. The endeavour
for an object system in Haskell is particularly advanced in that,
initially, Haskells appears to be suboptimally suited for OO
programming, but suddenly the incorporation of type-level programming
enables an object system with rich expressivity and variations
possible, e.g.: structural and nominal subtyping with type inference,
co- and contravariance, deep subtyping, and multiple inheritance.
List of lectures
The tutorial lasts about 7 hours (depending on background, and hence,
speed of presentation).
Further links
- Literature
- An annotated bibliography [.pdf]
- Key papers:
- "Software extension and integration with type classes" [.pdf]
- "Strongly typed heterogeneous collections" [.pdf]
- "Haskell's overlooked object system" [.pdf]
- "Fun With Type Functions" [.pdf]
- Software
maintained by Ralf Lämmel
(Email: rlaemmel@acm.org)