[Haskell] generalized newtype deriving breaks type class invariants. that is bad.