+ nlHsVar genUnitDataCon_RDR,
+ noLoc (SigPatIn (nlVarPat (mkGenericLocal us))
+ (noLoc (HsTyVar (getRdrName genUnitTyConName)))),
+ -- Give a signature to the pattern so we get
+ -- data S a = Nil | S a
+ -- toS = \x -> case x of { Inl (g :: Unit) -> Nil
+ -- Inr x -> S x }
+ -- The (:: Unit) signature ensures that we'll infer the right
+ -- type for toS. If we leave it out, the type is too polymorphic
+