deriving Data, Typeable for empty data decls
Empty data decls are useful for things like phantom types. However, deriving (Data, Typeable) does not work with them, so if you want to use them with generics you must do something like the following:
data PredTag
instance Typeable PredTag where
typeOf _ = G.mkTyConApp (G.mkTyCon "PredTag") []
Surely GHC could derive this for us!