Instant Generics: Fast and Easy.
http://www.cse.unsw.edu.au/~chak/papers/CDL09.html
This paper introduces a novel approach to datatype-generic programming based on type classes and type families. It is fairly easy to use, is very expressive, and incurs minimal overhead over handwritten datatype-specific code.