Make Generic1 kind polymorphic
It looks to me that the Generic1
class (and the Rep1
associated type) can immediately be generalized to forall k. k -> *
. If k
was instantiated to anything other than *
, you wouldn't be able to make an instance for Par1
, but then I don't think it would ever come up so that would be exactly the right behavior. This allows, in particular, DataKinds
to be used as a parameter to instances of Generic1
.
I don't know if this would affect deriving, but I wouldn't really expect it to.
Edited by Simon Peyton Jones