|Version 3 (modified by dreixel, 3 years ago) (diff)|
The new Generic Deriving mechanism
GHC includes a new (in 2010) mechanism to let you write generic functions. It is described in A generic deriving mechanism for Haskell, by Magalhães, Dijkstra, Jeuring and Löh. This page sketches the specifics of the implementation; we assume you have read the paper.
This mechanism replaces the previous generic classes implementation.
- TcDeriv.tcDeriving generates an InstInfo for each data type that fulfills the isRep0 predicate. This InstInfo is the Representable0 instance for that type, allowing it to be handled generically (by kind-* generic functions).
- The representation types and core functionality of the library live on GHC.Generics (on the ghc-prim package).
- Many names have been added as known in prelude/PrelNames
- Most of the code generation is handled by types/Generics
- Generate meta-information empty datatypes and instances (Datatype, Constructor, and Selector instances)
- Generate Representable1 instances
- Generic instances