Ticket #7631 (closed feature request: fixed)
Allow to differentiate between newtypes and datatypes when using Generics
When writing a generic instance, I would like to be able to tell whether the type under consideration has been declared using newtype or data.
For example, in SmallCheck? we generate values of certain "depth". It is natural to treat datatype constructors as increasing the depth of the constructed value, and newtype constructors as preserving the depth.