[Haskell-cafe] Deriving instances with GADTs