Hi Andres,
I don't understand what's going on here. Instances for V1 should of
course be defined if they can be! And in this case, a V1 instance
makes sense and should be defined. The definition itself doesn't
matter, as it'll never be executed.
data Ze deriving Generic
class DeepSeq a where
rnf :: a -> ()
default rnf :: (Generic a, GDeepSeq (Rep a)) => a -> ()
rnf = grnf . from
instance DeepSeq Ze
class GDeepSeq f where
grnf :: f a -> ()
instance GDeepSeq V1 where
grnf _ = ()
instance GDeepSeq a => GDeepSeq (M1 i c a) where
grnf = grnf . unM1
-- other instances are not relevant now
t :: Ze
t = undefined