Tired of writing boilerplate code? Tired of repeating essentially the
same function definition for lots of different datatypes?
Datatype-generic programming promises to end these coding nightmares.
In these lecture notes, we present the key abstractions of
datatype-generic programming, give several applications, and provide
an elegant embedding of generic programming into Haskell.
The embedding builds on recent advances in type theory: generalised
algebraic datatypes and open datatypes.
We hope to convince you that generic programming is useful and that
you can use generic programming techniques today!