Generic programming support in GHC allows defining classes with methods that do not need a user specification when instantiating: the method body is automatically derived by GHC. This is similar to what happens for standard classes such as Read and Show, for instance, but now for user-defined classes.
See also:
- Generic programming in the GHC manual.
- Generics on the Haskell Wiki.