Deriving tweaking

David Feuer david.feuer at
Fri Aug 5 18:08:00 UTC 2016

I know there's been some discussion about letting users select the deriving
mechanism they want, but I'd like to propose a separate tweak to the
defaults. Specifically, it's annoying to have to use three pragmas to let
me write

newtype Foo f a = Foo (f a) deriving (Functor, Foldable, Traversable)
data Bar f a = Bar (f a) deriving (Functor, Foldable, Traversable)

and more annoying still that I'll end up with Foldable and Functor
instances for Foo that may be much worse than GND-derived ones.

The tweaks I'm after:

1. Prefer GND to the built-in derivations for Functor and Foldable, and
probably also Eq and Ord.
2. Make DeriveTraversable imply DeriveFunctor and DeriveFoldable.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the ghc-devs mailing list