title: Why is there no `-XDeriveApplicative` extension?
body: <p>GHC has several useful language <a href="http://www.haskell.org/ghc/docs/6.12.1/html/users_guide/deriving.html">extensions</a> for mechanically deriving various common Haskell typeclasses (<code>-XDeriveFunctor</code>, <code>-XDeriveFoldable</code>, <code>-XDeriveTraversable</code>). It seems that <code>Applicative</code> is another class which is often needed and frequently easily derived. For a  simple record containing slots of type <code>a</code>, e.g.,</p>
  
  
  
  <pre class="lang-hs prettyprint-override"><code>data SimpleRecord a = Simple a a a
  </code></pre>
  
  <p>the <code>Applicative</code> instance is trivially derived,</p>
  
  <pre class="lang-hs prettyprint-override"><code>instance Applicative SimpleRecord where
      pure x = Simple x x x
      Simple a1 b1 c1 &lt;*&gt; Simple a2 b2 c2 = Simple (a1 a2) (b1 b2) (c1 c2)
  </code></pre>
  
  <p>Even in the slightly harder case where some <code>a</code> values are buried in other applicative functors, e.g.,</p>
  
  <pre class="lang-hs prettyprint-override"><code>data MyRecord f a = MyRecord (f a) a
  </code></pre>
  
  <p>a reasonable instance is easily written,</p>
  
  <pre class="lang-hs prettyprint-override"><code>instance (Applicative f) =&gt; Applicative (MyRecord f) where
      pure x = MyRecord (pure x) x
      MyRecord a1 b1 &lt;*&gt; MyRecord a2 b2 = MyRecord (a1 &lt;*&gt; a2) (b1 b1)
  </code></pre>
  
  <p>Why is it that a <code>-XDeriveApplicative</code> extension implementing these sorts of mechanical instances does not exist? Even the <code>derive</code> and <code>generic-derive</code> packages apparently lack <code>Applicative</code> support. Is there a theoretical issue precluding these instances from being usually valid (beyond those reasons that might also threaten the <code>Functor</code>, <code>Foldable</code>, or <code>Traversable</code> extensions)?</p>