Make DeriveTraversable imply DeriveFunctor/Foldable
authorSjoerd Visscher <sjoerd@w3future.com>
Fri, 6 Jun 2014 13:24:41 +0000 (15:24 +0200)
committerSjoerd Visscher <sjoerd@w3future.com>
Fri, 6 Jun 2014 13:24:41 +0000 (15:24 +0200)
Implements #9069

compiler/main/DynFlags.hs
docs/users_guide/glasgow_exts.xml

index 4db1d2c..5f125ef 100644 (file)
@@ -2957,6 +2957,9 @@ impliedFlags
     , (Opt_ImplicitParams, turnOn, Opt_FlexibleInstances)
 
     , (Opt_JavaScriptFFI, turnOn, Opt_InterruptibleFFI)
+    
+    , (Opt_DeriveTraversable, turnOn, Opt_DeriveFunctor)
+    , (Opt_DeriveTraversable, turnOn, Opt_DeriveFoldable)
   ]
 
 optLevelFlags :: [([Int], GeneralFlag)]
index d5dfa4d..ac8004f 100644 (file)
@@ -3882,7 +3882,11 @@ defined in <literal>Data.Foldable</literal>.
 
 <listitem><para> With <option>-XDeriveTraversable</option>, you can derive instances of
 the class <literal>Traversable</literal>,
-defined in <literal>Data.Traversable</literal>.
+defined in <literal>Data.Traversable</literal>. Since the <literal>Traversable</literal>
+instance dictates the instances of <literal>Functor</literal> and 
+<literal>Foldable</literal>, you'll probably want to derive them too, so
+<option>-XDeriveTraversable</option> implies
+<option>-XDeriveFunctor</option> and <option>-XDeriveFoldable</option>.
 </para></listitem>
 </itemizedlist>
 You can also use a standalone deriving declaration instead