
Hi, I concur with Richard: DeriveAnyClass is convenient where it works, but too implicit and too magical for my taste. It’s a cute trick, but in general “just write an empty instance and hope for the best” isn't a particular convincing solution to this problem. There was a recent blog post, written tongue in cheek, about removing type class features in Haskell … here it is: https://www.parsonsmatt.org/2020/11/10/simplifying_deriving.html and the gist here is: With DerivingVia we don’t need DeriveAnyClass: newtype Generically a = Generically a instance (Generic a, GToJSON (Rep a)) => ToJSON (Generically a) where toJSON (Generically a) = gtoJSON a data X = X deriving stock Generic deriving ToJSON via Generically X And the last line is easier to understand and safer than DeriveAnyClass. In light of these alternatives, I am still inclined to not give DeriveAnyClass the seal of “harmless and uncontentious” :-) Cheers, Joachim -- Joachim Breitner mail@joachim-breitner.de http://www.joachim-breitner.de/