
I am trying to find a list of classes which can be derived 'out of the box' with GHC 8.0, i.e. without installing extra packages like derive [1]. There is quite a lot of information on how 'deriving' (inline and standalone) works [2] on the GHC wiki, but sadly no list. Yes, it does say that any class could be made derivable, but that's not useful, as it doesn't which ones have been. The page describing DerivingStrategies does have a list of 'stock classes' - is this indeed the full list? From the 8.0.1 documentation on Deriving [4], one can extract a list too. For reference, as far as I can tell, the answer to my question *appears to be* (using extensions as necessary): - Bounded, Enum, Eq, Ix, Ord, Read, Show, Functor, Foldable, Traversable, Generic, Generic1, Data, Lift. I do understand that GeneralizedNewtypeDeriving muddies the water. Let's ignore 'newtype' for this purpose, and only concentrate on 'data'. If my guess is correct, would it make sense to put this information somewhere easy to find, instead of having be buried, so that it needs to be 'dug out' ? Jacques [1] http://hackage.haskell.org/package/derive [2] https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/GenericDeriving [3] https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/DerivingStrategies [4] http://downloads.haskell.org/~ghc/8.0.1/docs/html/users_guide/glasgow_exts.h...