<p dir="ltr">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</p>
<p dir="ltr">newtype Foo f a = Foo (f a) deriving (Functor, Foldable, Traversable)<br>
data Bar f a = Bar (f a) deriving (Functor, Foldable, Traversable)</p>
<p dir="ltr">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.</p>
<p dir="ltr">The tweaks I'm after:</p>
<p dir="ltr">1. Prefer GND to the built-in derivations for Functor and Foldable, and probably also Eq and Ord.<br>
2. Make DeriveTraversable imply DeriveFunctor and DeriveFoldable.</p>