Thanks, Doaitse.
An extended version of this article is available as a technical report:
http://www.cs.uu.nl/research/techreps/UU-CS-2008-025.html
It introduces the concepts of datatype-generic programming using the libraries LIGD, SYB, and EMGM and compares them. There's also an additional section not in the published lecture notes on type-indexed datatypes with type families. You can even do the exercises in the lecture notes and check out the solutions in the tech report.
Regards,
Sean