Haskell library for generic programming; profiling libraries

The "Scrap your boilerplate" approach is a lightweight generic
programming approach for Haskell. Using this approach, you can write
generic functions such as traversal schemes (e.g., everywhere and
everything), as well as generic read, generic show and generic
equality (i.e., gread, gshow, and geq). This approach is based on
just a few primitives for type-safe cast and processing constructor
applications.