Support for deriving Generic1 for data families
The following code:
import GHC.Generics data family F typ :: * -> * data A data instance F A a = AData a deriving Generic1
produces an error when run with ghc 7.8.2 or 7.8.3:
Couldn't match type ‘Rep1 (F A)’ with ‘M1 t0 t1 (M1 t2 t3 (M1 t4 t5 Par1))’ The type variables ‘t0’, ‘t1’, ‘t2’, ‘t3’, ‘t4’, ‘t5’ are ambiguous Expected type: Rep1 (F A) a Actual type: M1 t0 t1 (M1 t2 t3 (M1 t4 t5 Par1)) a In the pattern: M1 (M1 (M1 g1)) In an equation for ‘to1’: to1 (M1 (M1 (M1 g1))) = AData (unPar1 g1) In the instance declaration for ‘Generic1 (F A)’
whereas ghc 7.6.3 simply refuses to go ahead with the message:
generic1.hs:14:40: Derived instance `Generic1 (F A)' requires illegal partial application of data type family F In the data instance declaration for `F'
Either a check has gone missing in 7.8.x, or a bug has crept up in the Generic1 support. I have gone through past tickets and #5936 (closed) suggests that it is the latter.