The last decade has seen a number of approaches to datatype-generic programming: PolyP, Functorial ML, ‘Scrap Your Boilerplate’,
Generic Haskell, ‘Generics for the Masses’, and so on. The approaches vary in sophistication and target audience: some propose
full-blown programming languages, some suggest libraries, some can be seen as categorical programming methods. In these lecture
notes we compare the various approaches to datatype-generic programming in Haskell. We introduce each approach by means of
example, and we evaluate it along different dimensions (expressivity, ease of use, and so on).