Add @since annotations for derived instances in base
authorChaitanya Koparkar <ckoparkar@gmail.com>
Fri, 2 Mar 2018 21:12:56 +0000 (16:12 -0500)
committerBen Gamari <ben@smart-cactus.org>
Fri, 2 Mar 2018 21:13:07 +0000 (16:13 -0500)
Test Plan: ./validate

Reviewers: hvr, goldfire, bgamari, RyanGlScott

Reviewed By: RyanGlScott

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #11767

Differential Revision: https://phabricator.haskell.org/D4452

62 files changed:
libraries/base/Control/Applicative.hs
libraries/base/Control/Concurrent/Chan.hs
libraries/base/Data/Complex.hs
libraries/base/Data/Data.hs
libraries/base/Data/Either.hs
libraries/base/Data/Fixed.hs
libraries/base/Data/Foldable.hs
libraries/base/Data/Functor/Compose.hs
libraries/base/Data/Functor/Const.hs
libraries/base/Data/Functor/Identity.hs
libraries/base/Data/Functor/Product.hs
libraries/base/Data/Functor/Sum.hs
libraries/base/Data/Monoid.hs
libraries/base/Data/Ord.hs
libraries/base/Data/Proxy.hs
libraries/base/Data/Semigroup.hs
libraries/base/Data/Semigroup/Internal.hs
libraries/base/Data/String.hs
libraries/base/Data/Traversable.hs
libraries/base/Data/Type/Coercion.hs
libraries/base/Data/Type/Equality.hs
libraries/base/Data/Version.hs
libraries/base/GHC/Base.hs
libraries/base/GHC/ByteOrder.hs
libraries/base/GHC/Conc/Sync.hs
libraries/base/GHC/Conc/Windows.hs
libraries/base/GHC/Event/Control.hs
libraries/base/GHC/Event/EPoll.hsc
libraries/base/GHC/Event/Internal.hs
libraries/base/GHC/Event/KQueue.hsc
libraries/base/GHC/Event/Manager.hs
libraries/base/GHC/Event/Poll.hsc
libraries/base/GHC/Event/TimerManager.hs
libraries/base/GHC/Event/Unique.hs
libraries/base/GHC/Exception.hs
libraries/base/GHC/Exts.hs
libraries/base/GHC/Fingerprint/Type.hs
libraries/base/GHC/Generics.hs
libraries/base/GHC/IO.hs
libraries/base/GHC/IO/Buffer.hs
libraries/base/GHC/IO/Device.hs
libraries/base/GHC/IO/Encoding/Failure.hs
libraries/base/GHC/IO/Encoding/Types.hs
libraries/base/GHC/IO/Exception.hs
libraries/base/GHC/IO/Handle/Lock.hsc
libraries/base/GHC/IO/Handle/Types.hs
libraries/base/GHC/IO/IOMode.hs
libraries/base/GHC/IORef.hs
libraries/base/GHC/Natural.hs
libraries/base/GHC/Ptr.hs
libraries/base/GHC/RTS/Flags.hsc
libraries/base/GHC/Read.hs
libraries/base/GHC/Real.hs
libraries/base/GHC/Show.hs
libraries/base/GHC/Stable.hs
libraries/base/GHC/Stack/Types.hs
libraries/base/GHC/StaticPtr.hs
libraries/base/GHC/Stats.hsc
libraries/base/GHC/Unicode.hs
libraries/base/System/Timeout.hs
libraries/base/Text/ParserCombinators/ReadP.hs
libraries/base/Text/Read/Lex.hs

index 3e531e5..5e2fc8e 100644 (file)
@@ -64,7 +64,10 @@ import GHC.Read (Read)
 import GHC.Show (Show)
 
 newtype WrappedMonad m a = WrapMonad { unwrapMonad :: m a }
-                         deriving (Generic, Generic1, Monad)
+                         deriving ( Generic  -- ^ @since 4.7.0.0
+                                  , Generic1 -- ^ @since 4.7.0.0
+                                  , Monad    -- ^ @since 4.7.0.0
+                                  )
 
 -- | @since 2.01
 instance Monad m => Functor (WrappedMonad m) where
@@ -82,7 +85,9 @@ instance MonadPlus m => Alternative (WrappedMonad m) where
     WrapMonad u <|> WrapMonad v = WrapMonad (u `mplus` v)
 
 newtype WrappedArrow a b c = WrapArrow { unwrapArrow :: a b c }
-                           deriving (Generic, Generic1)
+                           deriving ( Generic  -- ^ @since 4.7.0.0
+                                    , Generic1 -- ^ @since 4.7.0.0
+                                    )
 
 -- | @since 2.01
 instance Arrow a => Functor (WrappedArrow a b) where
@@ -101,8 +106,15 @@ instance (ArrowZero a, ArrowPlus a) => Alternative (WrappedArrow a b) where
 
 -- | Lists, but with an 'Applicative' functor based on zipping.
 newtype ZipList a = ZipList { getZipList :: [a] }
-                  deriving ( Show, Eq, Ord, Read, Functor
-                           , Foldable, Generic, Generic1)
+                  deriving ( Show     -- ^ @since 4.7.0.0
+                           , Eq       -- ^ @since 4.7.0.0
+                           , Ord      -- ^ @since 4.7.0.0
+                           , Read     -- ^ @since 4.7.0.0
+                           , Functor  -- ^ @since 2.01
+                           , Foldable -- ^ @since 4.9.0.0
+                           , Generic  -- ^ @since 4.7.0.0
+                           , Generic1 -- ^ @since 4.7.0.0
+                           )
 -- See Data.Traversable for Traversable instance due to import loops
 
 -- |
index 9bfd40b..d752a89 100644 (file)
@@ -50,7 +50,7 @@ import Control.Exception (mask_)
 data Chan a
  = Chan _UPK_(MVar (Stream a))
         _UPK_(MVar (Stream a)) -- Invariant: the Stream a is always an empty MVar
-   deriving (Eq)
+   deriving Eq -- ^ @since 4.4.0.0
 
 type Stream a = MVar (ChItem a)
 
index e4ed4e8..073f5c5 100644 (file)
@@ -58,8 +58,16 @@ infix  6  :+
 data Complex a
   = !a :+ !a    -- ^ forms a complex number from its real and imaginary
                 -- rectangular components.
-        deriving (Eq, Show, Read, Data, Generic, Generic1
-                , Functor, Foldable, Traversable)
+        deriving ( Eq          -- ^ @since 2.01
+                 , Show        -- ^ @since 2.01
+                 , Read        -- ^ @since 2.01
+                 , Data        -- ^ @since 2.01
+                 , Generic     -- ^ @since 4.9.0.0
+                 , Generic1    -- ^ @since 4.9.0.0
+                 , Functor     -- ^ @since 4.9.0.0
+                 , Foldable    -- ^ @since 4.9.0.0
+                 , Traversable -- ^ @since 4.9.0.0
+                 )
 
 -- -----------------------------------------------------------------------------
 -- Functions over Complex
index e22f7cb..930b4b8 100644 (file)
@@ -511,7 +511,7 @@ data DataType = DataType
                         , datarep :: DataRep
                         }
 
-              deriving Show
+              deriving Show -- ^ @since 4.0.0.0
 
 -- | Representation of constructors. Note that equality on constructors
 -- with different types may not work -- i.e. the constructors for 'False' and
@@ -543,7 +543,9 @@ data DataRep = AlgRep [Constr]
              | CharRep
              | NoRep
 
-            deriving (Eq,Show)
+            deriving ( Eq   -- ^ @since 4.0.0.0
+                     , Show -- ^ @since 4.0.0.0
+                     )
 -- The list of constructors could be an array, a balanced tree, or others.
 
 
@@ -553,7 +555,9 @@ data ConstrRep = AlgConstr    ConIndex
                | FloatConstr  Rational
                | CharConstr   Char
 
-               deriving (Eq,Show)
+               deriving ( Eq   -- ^ @since 4.0.0.0
+                        , Show -- ^ @since 4.0.0.0
+                        )
 
 
 -- | Unique index for datatype constructors,
@@ -565,7 +569,9 @@ type ConIndex = Int
 data Fixity = Prefix
             | Infix     -- Later: add associativity and precedence
 
-            deriving (Eq,Show)
+            deriving ( Eq   -- ^ @since 4.0.0.0
+                     , Show -- ^ @since 4.0.0.0
+                     )
 
 
 ------------------------------------------------------------------------------
index c5ff7c0..5f23a3e 100644 (file)
@@ -123,7 +123,11 @@ Left "parse error"
 
 -}
 data  Either a b  =  Left a | Right b
-  deriving (Eq, Ord, Read, Show)
+  deriving ( Eq   -- ^ @since 2.01
+           , Ord  -- ^ @since 2.01
+           , Read -- ^ @since 3.0
+           , Show -- ^ @since 3.0
+           )
 
 -- | @since 3.0
 instance Functor (Either a) where
@@ -336,4 +340,3 @@ prop_partitionEithers :: [Either Int Int] -> Bool
 prop_partitionEithers x =
   partitionEithers x == (lefts x, rights x)
 -}
-
index e5e1f2f..b8db351 100644 (file)
@@ -57,8 +57,10 @@ mod' n d = n - (fromInteger f) * d where
     f = div' n d
 
 -- | The type parameter should be an instance of 'HasResolution'.
-newtype Fixed a = MkFixed Integer -- ^ @since 4.7.0.0
-        deriving (Eq,Ord)
+newtype Fixed a = MkFixed Integer
+        deriving ( Eq  -- ^ @since 2.01
+                 , Ord -- ^ @since 2.01
+                 )
 
 -- We do this because the automatically derived Data instance requires (Data a) context.
 -- Our manual instance has the more general (Typeable a) context.
index 2656efa..3fa5748 100644 (file)
@@ -439,19 +439,46 @@ instance Foldable U1 where
     sum _      = 0
     product _  = 1
 
+-- | @since 4.9.0.0
 deriving instance Foldable V1
+
+-- | @since 4.9.0.0
 deriving instance Foldable Par1
+
+-- | @since 4.9.0.0
 deriving instance Foldable f => Foldable (Rec1 f)
+
+-- | @since 4.9.0.0
 deriving instance Foldable (K1 i c)
+
+-- | @since 4.9.0.0
 deriving instance Foldable f => Foldable (M1 i c f)
+
+-- | @since 4.9.0.0
 deriving instance (Foldable f, Foldable g) => Foldable (f :+: g)
+
+-- | @since 4.9.0.0
 deriving instance (Foldable f, Foldable g) => Foldable (f :*: g)
+
+-- | @since 4.9.0.0
 deriving instance (Foldable f, Foldable g) => Foldable (f :.: g)
+
+-- | @since 4.9.0.0
 deriving instance Foldable UAddr
+
+-- | @since 4.9.0.0
 deriving instance Foldable UChar
+
+-- | @since 4.9.0.0
 deriving instance Foldable UDouble
+
+-- | @since 4.9.0.0
 deriving instance Foldable UFloat
+
+-- | @since 4.9.0.0
 deriving instance Foldable UInt
+
+-- | @since 4.9.0.0
 deriving instance Foldable UWord
 
 -- | Monadic fold over the elements of a structure,
index 68fbfc6..8ceadb8 100644 (file)
@@ -38,7 +38,10 @@ infixr 9 `Compose`
 -- The composition of applicative functors is always applicative,
 -- but the composition of monads is not always a monad.
 newtype Compose f g a = Compose { getCompose :: f (g a) }
-  deriving (Data, Generic, Generic1)
+  deriving ( Data     -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- Instances of lifted Prelude classes
 
index 8a33e58..028ae20 100644 (file)
@@ -37,9 +37,26 @@ import GHC.Show (Show(showsPrec), showParen, showString)
 
 -- | The 'Const' functor.
 newtype Const a b = Const { getConst :: a }
-    deriving ( Bits, Bounded, Enum, Eq, FiniteBits, Floating, Fractional
-             , Generic, Generic1, Integral, Ix, Semigroup, Monoid, Num, Ord
-             , Real, RealFrac, RealFloat, Storable)
+    deriving ( Bits       -- ^ @since 4.9.0.0
+             , Bounded    -- ^ @since 4.9.0.0
+             , Enum       -- ^ @since 4.9.0.0
+             , Eq         -- ^ @since 4.9.0.0
+             , FiniteBits -- ^ @since 4.9.0.0
+             , Floating   -- ^ @since 4.9.0.0
+             , Fractional -- ^ @since 4.9.0.0
+             , Generic    -- ^ @since 4.9.0.0
+             , Generic1   -- ^ @since 4.9.0.0
+             , Integral   -- ^ @since 4.9.0.0
+             , Ix         -- ^ @since 4.9.0.0
+             , Semigroup  -- ^ @since 4.9.0.0
+             , Monoid     -- ^ @since 4.9.0.0
+             , Num        -- ^ @since 4.9.0.0
+             , Ord        -- ^ @since 4.9.0.0
+             , Real       -- ^ @since 4.9.0.0
+             , RealFrac   -- ^ @since 4.9.0.0
+             , RealFloat  -- ^ @since 4.9.0.0
+             , Storable   -- ^ @since 4.9.0.0
+             )
 
 -- | This instance would be equivalent to the derived instances of the
 -- 'Const' newtype if the 'runConst' field were removed
index 41c32d0..daaa3a4 100644 (file)
@@ -57,9 +57,26 @@ import GHC.Types (Bool(..))
 --
 -- @since 4.8.0.0
 newtype Identity a = Identity { runIdentity :: a }
-    deriving ( Bits, Bounded, Enum, Eq, FiniteBits, Floating, Fractional
-             , Generic, Generic1, Integral, Ix, Semigroup, Monoid, Num, Ord
-             , Real, RealFrac, RealFloat, Storable)
+    deriving ( Bits       -- ^ @since 4.9.0.0
+             , Bounded    -- ^ @since 4.9.0.0
+             , Enum       -- ^ @since 4.9.0.0
+             , Eq         -- ^ @since 4.8.0.0
+             , FiniteBits -- ^ @since 4.9.0.0
+             , Floating   -- ^ @since 4.9.0.0
+             , Fractional -- ^ @since 4.9.0.0
+             , Generic    -- ^ @since 4.8.0.0
+             , Generic1   -- ^ @since 4.8.0.0
+             , Integral   -- ^ @since 4.9.0.0
+             , Ix         -- ^ @since 4.9.0.0
+             , Semigroup  -- ^ @since 4.9.0.0
+             , Monoid     -- ^ @since 4.9.0.0
+             , Num        -- ^ @since 4.9.0.0
+             , Ord        -- ^ @since 4.8.0.0
+             , Real       -- ^ @since 4.9.0.0
+             , RealFrac   -- ^ @since 4.9.0.0
+             , RealFloat  -- ^ @since 4.9.0.0
+             , Storable   -- ^ @since 4.9.0.0
+             )
 
 -- | This instance would be equivalent to the derived instances of the
 -- 'Identity' newtype if the 'runIdentity' field were removed
index 7676aa5..d98d31e 100644 (file)
@@ -35,7 +35,10 @@ import Text.Read (Read(..), readListDefault, readListPrecDefault)
 
 -- | Lifted product of functors.
 data Product f g a = Pair (f a) (g a)
-  deriving (Data, Generic, Generic1)
+  deriving ( Data     -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance (Eq1 f, Eq1 g) => Eq1 (Product f g) where
index f18feae..68e60fe 100644 (file)
@@ -31,7 +31,10 @@ import Text.Read (Read(..), readListDefault, readListPrecDefault)
 
 -- | Lifted sum of functors.
 data Sum f g a = InL (f a) | InR (g a)
-  deriving (Data, Generic, Generic1)
+  deriving ( Data     -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance (Eq1 f, Eq1 g) => Eq1 (Sum f g) where
index 1284a07..b6d09c1 100644 (file)
@@ -89,8 +89,16 @@ import Data.Semigroup.Internal
 -- >>> getFirst (First (Just "hello") <> First Nothing <> First (Just "world"))
 -- Just "hello"
 newtype First a = First { getFirst :: Maybe a }
-        deriving (Eq, Ord, Read, Show, Generic, Generic1,
-                  Functor, Applicative, Monad)
+        deriving ( Eq          -- ^ @since 2.01
+                 , Ord         -- ^ @since 2.01
+                 , Read        -- ^ @since 2.01
+                 , Show        -- ^ @since 2.01
+                 , Generic     -- ^ @since 4.7.0.0
+                 , Generic1    -- ^ @since 4.7.0.0
+                 , Functor     -- ^ @since 4.8.0.0
+                 , Applicative -- ^ @since 4.8.0.0
+                 , Monad       -- ^ @since 4.8.0.0
+                 )
 
 -- | @since 4.9.0.0
 instance Semigroup (First a) where
@@ -110,8 +118,16 @@ instance Monoid (First a) where
 -- >>> getLast (Last (Just "hello") <> Last Nothing <> Last (Just "world"))
 -- Just "world"
 newtype Last a = Last { getLast :: Maybe a }
-        deriving (Eq, Ord, Read, Show, Generic, Generic1,
-                  Functor, Applicative, Monad)
+        deriving ( Eq          -- ^ @since 2.01
+                 , Ord         -- ^ @since 2.01
+                 , Read        -- ^ @since 2.01
+                 , Show        -- ^ @since 2.01
+                 , Generic     -- ^ @since 4.7.0.0
+                 , Generic1    -- ^ @since 4.7.0.0
+                 , Functor     -- ^ @since 4.8.0.0
+                 , Applicative -- ^ @since 4.8.0.0
+                 , Monad       -- ^ @since 4.8.0.0
+                 )
 
 -- | @since 4.9.0.0
 instance Semigroup (Last a) where
index 2f5798c..c6b7e59 100644 (file)
@@ -48,12 +48,12 @@ comparing p x y = compare (p x) (p y)
 -- @since 4.6.0.0
 newtype Down a = Down a
     deriving
-      ( Eq
-      , Show -- ^ @since 4.7.0.0
-      , Read -- ^ @since 4.7.0.0
-      , Num -- ^ @since 4.11.0.0
+      ( Eq        -- ^ @since 4.6.0.0
+      , Show      -- ^ @since 4.7.0.0
+      , Read      -- ^ @since 4.7.0.0
+      , Num       -- ^ @since 4.11.0.0
       , Semigroup -- ^ @since 4.11.0.0
-      , Monoid -- ^ @since 4.11.0.0
+      , Monoid    -- ^ @since 4.11.0.0
       )
 
 -- | @since 4.6.0.0
index 4f824d0..cdbb0d4 100644 (file)
@@ -53,8 +53,8 @@ import GHC.Arr
 --
 -- >>> Proxy :: Proxy complicatedStructure
 -- Proxy
-data Proxy t = Proxy deriving ( Bounded
-                              , Read -- ^ @since 4.7.0.0
+data Proxy t = Proxy deriving ( Bounded -- ^ @since 4.7.0.0
+                              , Read    -- ^ @since 4.7.0.0
                               )
 
 -- | A concrete, promotable proxy type, for use at the kind level
index 4d06a40..4438e2f 100644 (file)
@@ -95,7 +95,15 @@ diff :: Semigroup m => m -> Endo m
 diff = Endo . (<>)
 
 newtype Min a = Min { getMin :: a }
-  deriving (Bounded, Eq, Ord, Show, Read, Data, Generic, Generic1)
+  deriving ( Bounded  -- ^ @since 4.9.0.0
+           , Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Show     -- ^ @since 4.9.0.0
+           , Read     -- ^ @since 4.9.0.0
+           , Data     -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance Enum a => Enum (Min a) where
@@ -158,7 +166,15 @@ instance Num a => Num (Min a) where
   fromInteger    = Min . fromInteger
 
 newtype Max a = Max { getMax :: a }
-  deriving (Bounded, Eq, Ord, Show, Read, Data, Generic, Generic1)
+  deriving ( Bounded  -- ^ @since 4.9.0.0
+           , Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Show     -- ^ @since 4.9.0.0
+           , Read     -- ^ @since 4.9.0.0
+           , Data     -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance Enum a => Enum (Max a) where
@@ -222,7 +238,12 @@ instance Num a => Num (Max a) where
 -- | 'Arg' isn't itself a 'Semigroup' in its own right, but it can be
 -- placed inside 'Min' and 'Max' to compute an arg min or arg max.
 data Arg a b = Arg a b deriving
-  (Show, Read, Data, Generic, Generic1)
+  ( Show     -- ^ @since 4.9.0.0
+  , Read     -- ^ @since 4.9.0.0
+  , Data     -- ^ @since 4.9.0.0
+  , Generic  -- ^ @since 4.9.0.0
+  , Generic1 -- ^ @since 4.9.0.0
+  )
 
 type ArgMin a b = Min (Arg a b)
 type ArgMax a b = Max (Arg a b)
@@ -267,8 +288,16 @@ instance Bitraversable Arg where
 
 -- | Use @'Option' ('First' a)@ to get the behavior of
 -- 'Data.Monoid.First' from "Data.Monoid".
-newtype First a = First { getFirst :: a } deriving
-  (Bounded, Eq, Ord, Show, Read, Data, Generic, Generic1)
+newtype First a = First { getFirst :: a }
+  deriving ( Bounded  -- ^ @since 4.9.0.0
+           , Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Show     -- ^ @since 4.9.0.0
+           , Read     -- ^ @since 4.9.0.0
+           , Data     -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance Enum a => Enum (First a) where
@@ -317,8 +346,16 @@ instance MonadFix First where
 
 -- | Use @'Option' ('Last' a)@ to get the behavior of
 -- 'Data.Monoid.Last' from "Data.Monoid"
-newtype Last a = Last { getLast :: a } deriving
-  (Bounded, Eq, Ord, Show, Read, Data, Generic, Generic1)
+newtype Last a = Last { getLast :: a }
+  deriving ( Bounded  -- ^ @since 4.9.0.0
+           , Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Show     -- ^ @since 4.9.0.0
+           , Read     -- ^ @since 4.9.0.0
+           , Data     -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance Enum a => Enum (Last a) where
@@ -371,7 +408,15 @@ instance MonadFix Last where
 -- __NOTE__: This is not needed anymore since 'Semigroup' became a superclass of
 -- 'Monoid' in /base-4.11/ and this newtype be deprecated at some point in the future.
 newtype WrappedMonoid m = WrapMonoid { unwrapMonoid :: m }
-  deriving (Bounded, Eq, Ord, Show, Read, Data, Generic, Generic1)
+  deriving ( Bounded  -- ^ @since 4.9.0.0
+           , Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Show     -- ^ @since 4.9.0.0
+           , Read     -- ^ @since 4.9.0.0
+           , Data     -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance Monoid m => Semigroup (WrappedMonoid m) where
@@ -412,7 +457,14 @@ mtimesDefault n x
 -- Ideally, this type would not exist at all and we would just fix the
 -- 'Monoid' instance of 'Maybe'
 newtype Option a = Option { getOption :: Maybe a }
-  deriving (Eq, Ord, Show, Read, Data, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Show     -- ^ @since 4.9.0.0
+           , Read     -- ^ @since 4.9.0.0
+           , Data     -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance Functor Option where
index 7d163bd..7484608 100644 (file)
@@ -108,7 +108,14 @@ stimesList n x
 -- >>> getDual (mappend (Dual "Hello") (Dual "World"))
 -- "WorldHello"
 newtype Dual a = Dual { getDual :: a }
-        deriving (Eq, Ord, Read, Show, Bounded, Generic, Generic1)
+        deriving ( Eq       -- ^ @since 2.01
+                 , Ord      -- ^ @since 2.01
+                 , Read     -- ^ @since 2.01
+                 , Show     -- ^ @since 2.01
+                 , Bounded  -- ^ @since 2.01
+                 , Generic  -- ^ @since 4.7.0.0
+                 , Generic1 -- ^ @since 4.7.0.0
+                 )
 
 -- | @since 4.9.0.0
 instance Semigroup a => Semigroup (Dual a) where
@@ -138,7 +145,8 @@ instance Monad Dual where
 -- >>> appEndo computation "Haskell"
 -- "Hello, Haskell!"
 newtype Endo a = Endo { appEndo :: a -> a }
-               deriving (Generic)
+               deriving ( Generic -- ^ @since 4.7.0.0
+                        )
 
 -- | @since 4.9.0.0
 instance Semigroup (Endo a) where
@@ -157,7 +165,13 @@ instance Monoid (Endo a) where
 -- >>> getAll (mconcat (map (\x -> All (even x)) [2,4,6,7,8]))
 -- False
 newtype All = All { getAll :: Bool }
-        deriving (Eq, Ord, Read, Show, Bounded, Generic)
+        deriving ( Eq      -- ^ @since 2.01
+                 , Ord     -- ^ @since 2.01
+                 , Read    -- ^ @since 2.01
+                 , Show    -- ^ @since 2.01
+                 , Bounded -- ^ @since 2.01
+                 , Generic -- ^ @since 4.7.0.0
+                 )
 
 -- | @since 4.9.0.0
 instance Semigroup All where
@@ -176,7 +190,13 @@ instance Monoid All where
 -- >>> getAny (mconcat (map (\x -> Any (even x)) [2,4,6,7,8]))
 -- True
 newtype Any = Any { getAny :: Bool }
-        deriving (Eq, Ord, Read, Show, Bounded, Generic)
+        deriving ( Eq      -- ^ @since 2.01
+                 , Ord     -- ^ @since 2.01
+                 , Read    -- ^ @since 2.01
+                 , Show    -- ^ @since 2.01
+                 , Bounded -- ^ @since 2.01
+                 , Generic -- ^ @since 4.7.0.0
+                 )
 
 -- | @since 4.9.0.0
 instance Semigroup Any where
@@ -192,7 +212,15 @@ instance Monoid Any where
 -- >>> getSum (Sum 1 <> Sum 2 <> mempty)
 -- 3
 newtype Sum a = Sum { getSum :: a }
-        deriving (Eq, Ord, Read, Show, Bounded, Generic, Generic1, Num)
+        deriving ( Eq       -- ^ @since 2.01
+                 , Ord      -- ^ @since 2.01
+                 , Read     -- ^ @since 2.01
+                 , Show     -- ^ @since 2.01
+                 , Bounded  -- ^ @since 2.01
+                 , Generic  -- ^ @since 4.7.0.0
+                 , Generic1 -- ^ @since 4.7.0.0
+                 , Num      -- ^ @since 4.7.0.0
+                 )
 
 -- | @since 4.9.0.0
 instance Num a => Semigroup (Sum a) where
@@ -221,7 +249,15 @@ instance Monad Sum where
 -- >>> getProduct (Product 3 <> Product 4 <> mempty)
 -- 12
 newtype Product a = Product { getProduct :: a }
-        deriving (Eq, Ord, Read, Show, Bounded, Generic, Generic1, Num)
+        deriving ( Eq       -- ^ @since 2.01
+                 , Ord      -- ^ @since 2.01
+                 , Read     -- ^ @since 2.01
+                 , Show     -- ^ @since 2.01
+                 , Bounded  -- ^ @since 2.01
+                 , Generic  -- ^ @since 4.7.0.0
+                 , Generic1 -- ^ @since 4.7.0.0
+                 , Num      -- ^ @since 4.7.0.0
+                 )
 
 -- | @since 4.9.0.0
 instance Num a => Semigroup (Product a) where
@@ -251,8 +287,20 @@ instance Monad Product where
 --
 -- @since 4.8.0.0
 newtype Alt f a = Alt {getAlt :: f a}
-  deriving (Generic, Generic1, Read, Show, Eq, Ord, Num, Enum,
-            Monad, MonadPlus, Applicative, Alternative, Functor)
+  deriving ( Generic     -- ^ @since 4.8.0.0
+           , Generic1    -- ^ @since 4.8.0.0
+           , Read        -- ^ @since 4.8.0.0
+           , Show        -- ^ @since 4.8.0.0
+           , Eq          -- ^ @since 4.8.0.0
+           , Ord         -- ^ @since 4.8.0.0
+           , Num         -- ^ @since 4.8.0.0
+           , Enum        -- ^ @since 4.8.0.0
+           , Monad       -- ^ @since 4.8.0.0
+           , MonadPlus   -- ^ @since 4.8.0.0
+           , Applicative -- ^ @since 4.8.0.0
+           , Alternative -- ^ @since 4.8.0.0
+           , Functor     -- ^ @since 4.8.0.0
+           )
 
 -- | @since 4.9.0.0
 instance Alternative f => Semigroup (Alt f a) where
index e9f34a8..a7295a2 100644 (file)
@@ -88,4 +88,6 @@ instance (a ~ Char) => IsString [a] where
 
 -- | @since 4.9.0.0
 deriving instance IsString a => IsString (Const a b)
+
+-- | @since 4.9.0.0
 deriving instance IsString a => IsString (Identity a)
index 72d88b6..2a654b7 100644 (file)
@@ -293,6 +293,7 @@ instance Traversable Last where
 instance Traversable ZipList where
     traverse f (ZipList x) = ZipList <$> traverse f x
 
+-- | @since 4.9.0.0
 deriving instance Traversable Identity
 
 -- Instances for GHC.Generics
@@ -307,19 +308,46 @@ instance Traversable U1 where
     sequence _ = pure U1
     {-# INLINE sequence #-}
 
+-- | @since 4.9.0.0
 deriving instance Traversable V1
+
+-- | @since 4.9.0.0
 deriving instance Traversable Par1
+
+-- | @since 4.9.0.0
 deriving instance Traversable f => Traversable (Rec1 f)
+
+-- | @since 4.9.0.0
 deriving instance Traversable (K1 i c)
+
+-- | @since 4.9.0.0
 deriving instance Traversable f => Traversable (M1 i c f)
+
+-- | @since 4.9.0.0
 deriving instance (Traversable f, Traversable g) => Traversable (f :+: g)
+
+-- | @since 4.9.0.0
 deriving instance (Traversable f, Traversable g) => Traversable (f :*: g)
+
+-- | @since 4.9.0.0
 deriving instance (Traversable f, Traversable g) => Traversable (f :.: g)
+
+-- | @since 4.9.0.0
 deriving instance Traversable UAddr
+
+-- | @since 4.9.0.0
 deriving instance Traversable UChar
+
+-- | @since 4.9.0.0
 deriving instance Traversable UDouble
+
+-- | @since 4.9.0.0
 deriving instance Traversable UFloat
+
+-- | @since 4.9.0.0
 deriving instance Traversable UInt
+
+-- | @since 4.9.0.0
 deriving instance Traversable UWord
 
 -- general functions
index 2bfd9ae..b757682 100644 (file)
@@ -76,8 +76,13 @@ trans Coercion Coercion = Coercion
 repr :: (a Eq.:~: b) -> Coercion a b
 repr Eq.Refl = Coercion
 
+-- | @since 4.7.0.0
 deriving instance Eq   (Coercion a b)
+
+-- | @since 4.7.0.0
 deriving instance Show (Coercion a b)
+
+-- | @since 4.7.0.0
 deriving instance Ord  (Coercion a b)
 
 -- | @since 4.7.0.0
index a3d2e0e..8591499 100644 (file)
@@ -120,8 +120,13 @@ inner Refl = Refl
 outer :: (f a :~: g b) -> (f :~: g)
 outer Refl = Refl
 
+-- | @since 4.7.0.0
 deriving instance Eq   (a :~: b)
+
+-- | @since 4.7.0.0
 deriving instance Show (a :~: b)
+
+-- | @since 4.7.0.0
 deriving instance Ord  (a :~: b)
 
 -- | @since 4.7.0.0
index 310d738..6fb0169 100644 (file)
@@ -94,7 +94,10 @@ data Version =
                 -- The interpretation of the list of tags is entirely dependent
                 -- on the entity that this version applies to.
         }
-  deriving (Read,Show,Generic)
+  deriving ( Read    -- ^ @since 2.01
+           , Show    -- ^ @since 2.01
+           , Generic -- ^ @since 4.9.0.0
+           )
 {-# DEPRECATED versionTags "See GHC ticket #2496" #-}
 -- TODO. Remove all references to versionTags in GHC 8.0 release.
 
index 17d4151..4d52789 100644 (file)
@@ -211,7 +211,9 @@ foldr = errorWithoutStackTrace "urk"
 -- error monad can be built using the 'Data.Either.Either' type.
 --
 data  Maybe a  =  Nothing | Just a
-  deriving (Eq, Ord)
+  deriving ( Eq  -- ^ @since 2.01
+           , Ord -- ^ @since 2.01
+           )
 
 infixr 6 <>
 
@@ -941,7 +943,9 @@ infixr 5 :|
 --
 -- @since 4.9.0.0
 data NonEmpty a = a :| [a]
-  deriving (Eq, Ord)
+  deriving ( Eq  -- ^ @since 4.9.0.0
+           , Ord -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance Functor NonEmpty where
index eecc56c..a1f4da6 100644 (file)
@@ -20,7 +20,13 @@ module GHC.ByteOrder where
 data ByteOrder
     = BigEndian    -- ^ most-significant-byte occurs in lowest address.
     | LittleEndian -- ^ least-significant-byte occurs in lowest address.
-    deriving (Eq, Ord, Bounded, Enum, Read, Show)
+    deriving ( Eq      -- ^ @since 4.11.0.0
+             , Ord     -- ^ @since 4.11.0.0
+             , Bounded -- ^ @since 4.11.0.0
+             , Enum    -- ^ @since 4.11.0.0
+             , Read    -- ^ @since 4.11.0.0
+             , Show    -- ^ @since 4.11.0.0
+             )
 
 -- | The byte ordering of the target machine.
 targetByteOrder :: ByteOrder
index 0bd2900..517c20e 100644 (file)
@@ -558,7 +558,10 @@ data BlockReason
         -- ^blocked on some other resource.  Without @-threaded@,
         -- I\/O and 'threadDelay' show up as 'BlockedOnOther', with @-threaded@
         -- they show up as 'BlockedOnMVar'.
-  deriving (Eq,Ord,Show)
+  deriving ( Eq   -- ^ @since 4.3.0.0
+           , Ord  -- ^ @since 4.3.0.0
+           , Show -- ^ @since 4.3.0.0
+           )
 
 -- | The current status of a thread
 data ThreadStatus
@@ -570,7 +573,10 @@ data ThreadStatus
         -- ^the thread is blocked on some resource
   | ThreadDied
         -- ^the thread received an uncaught exception
-  deriving (Eq,Ord,Show)
+  deriving ( Eq   -- ^ @since 4.3.0.0
+           , Ord  -- ^ @since 4.3.0.0
+           , Show -- ^ @since 4.3.0.0
+           )
 
 threadStatus :: ThreadId -> IO ThreadStatus
 threadStatus (ThreadId t) = IO $ \s ->
index 6b87b06..6c41364 100644 (file)
@@ -278,7 +278,12 @@ data ConsoleEvent
     -- these are sent to Services only.
  | Logoff
  | Shutdown
- deriving (Eq, Ord, Enum, Show, Read)
+ deriving ( Eq   -- ^ @since 4.3.0.0
+          , Ord  -- ^ @since 4.3.0.0
+          , Enum -- ^ @since 4.3.0.0
+          , Show -- ^ @since 4.3.0.0
+          , Read -- ^ @since 4.3.0.0
+          )
 
 start_console_handler :: Word32 -> IO ()
 start_console_handler r =
index 9e3940a..5b4a81b 100644 (file)
@@ -57,7 +57,9 @@ data ControlMessage = CMsgWakeup
                     | CMsgDie
                     | CMsgSignal {-# UNPACK #-} !(ForeignPtr Word8)
                                  {-# UNPACK #-} !Signal
-    deriving (Eq, Show)
+    deriving ( Eq   -- ^ @since 4.4.0.0
+             , Show -- ^ @since 4.4.0.0
+             )
 
 -- | The structure used to tell the IO manager thread what to do.
 data Control = W {
index 32bfc39..14324bc 100644 (file)
@@ -161,7 +161,12 @@ newtype ControlOp = ControlOp CInt
 
 newtype EventType = EventType {
       unEventType :: Word32
-    } deriving (Show, Eq, Num, Bits, FiniteBits)
+    } deriving ( Show       -- ^ @since 4.4.0.0
+               , Eq         -- ^ @since 4.4.0.0
+               , Num        -- ^ @since 4.4.0.0
+               , Bits       -- ^ @since 4.4.0.0
+               , FiniteBits -- ^ @since 4.7.0.0
+               )
 
 #{enum EventType, EventType
  , epollIn  = EPOLLIN
index b7befdd..cb048cd 100644 (file)
@@ -40,7 +40,7 @@ import Data.Semigroup.Internal (stimesMonoid)
 
 -- | An I\/O event.
 newtype Event = Event Int
-    deriving (Eq)
+    deriving Eq -- ^ @since 4.4.0.0
 
 evtNothing :: Event
 evtNothing = Event 0
@@ -64,7 +64,7 @@ evtClose = Event 4
 eventIs :: Event -> Event -> Bool
 eventIs (Event a) (Event b) = a .&. b /= 0
 
--- | @since 4.3.1.0
+-- | @since 4.4.0.0
 instance Show Event where
     show e = '[' : (intercalate "," . filter (not . null) $
                     [evtRead `so` "evtRead",
@@ -78,7 +78,7 @@ instance Semigroup Event where
     (<>)    = evtCombine
     stimes  = stimesMonoid
 
--- | @since 4.3.1.0
+-- | @since 4.4.0.0
 instance Monoid Event where
     mempty  = evtNothing
     mconcat = evtConcat
@@ -97,7 +97,9 @@ evtConcat = foldl' evtCombine evtNothing
 data Lifetime = OneShot   -- ^ the registration will be active for only one
                           -- event
               | MultiShot -- ^ the registration will trigger multiple times
-              deriving (Show, Eq)
+              deriving ( Show -- ^ @since 4.8.1.0
+                       , Eq   -- ^ @since 4.8.1.0
+                       )
 
 -- | The longer of two lifetimes.
 elSupremum :: Lifetime -> Lifetime -> Lifetime
@@ -121,7 +123,9 @@ instance Monoid Lifetime where
 -- Here we encode the event in the bottom three bits and the lifetime
 -- in the fourth bit.
 newtype EventLifetime = EL Int
-                      deriving (Show, Eq)
+                      deriving ( Show -- ^ @since 4.8.0.0
+                               , Eq   -- ^ @since 4.8.0.0
+                               )
 
 -- | @since 4.11.0.0
 instance Semigroup EventLifetime where
@@ -149,7 +153,7 @@ elEvent (EL x) = Event (x .&. 0x7)
 -- | A type alias for timeouts, specified in nanoseconds.
 data Timeout = Timeout {-# UNPACK #-} !Word64
              | Forever
-               deriving (Show)
+               deriving Show -- ^ @since 4.4.0.0
 
 -- | Event notification backend.
 data Backend = forall a. Backend {
index 59b5ce1..49cf82d 100644 (file)
@@ -124,7 +124,9 @@ poll kq mtimeout f = do
 
 newtype KQueueFd = KQueueFd {
       fromKQueueFd :: CInt
-    } deriving (Eq, Show)
+    } deriving ( Eq   -- ^ @since 4.4.0.0
+               , Show -- ^ @since 4.4.0.0
+               )
 
 data Event = KEvent {
       ident  :: {-# UNPACK #-} !CUIntPtr
@@ -137,7 +139,7 @@ data Event = KEvent {
     , data_  :: {-# UNPACK #-} !CIntPtr
 #endif
     , udata  :: {-# UNPACK #-} !(Ptr ())
-    } deriving Show
+    } deriving Show -- ^ @since 4.4.0.0
 
 toEvents :: Fd -> [Filter] -> Flag -> FFlag -> [Event]
 toEvents fd flts flag fflag = map (\filt -> KEvent (fromIntegral fd) filt flag fflag 0 nullPtr) flts
@@ -167,7 +169,10 @@ instance Storable Event where
         #{poke struct kevent, udata} ptr (udata ev)
 
 newtype FFlag = FFlag Word32
-    deriving (Eq, Show, Storable)
+    deriving ( Eq       -- ^ @since 4.4.0.0
+             , Show     -- ^ @since 4.4.0.0
+             , Storable -- ^ @since 4.4.0.0
+             )
 
 #{enum FFlag, FFlag
  , noteEOF = NOTE_EOF
@@ -178,7 +183,13 @@ newtype Flag = Flag Word32
 #else
 newtype Flag = Flag Word16
 #endif
-    deriving (Bits, FiniteBits, Eq, Num, Show, Storable)
+    deriving ( Bits       -- ^ @since 4.7.0.0
+             , FiniteBits -- ^ @since 4.7.0.0
+             , Eq         -- ^ @since 4.4.0.0
+             , Num        -- ^ @since 4.7.0.0
+             , Show       -- ^ @since 4.4.0.0
+             , Storable   -- ^ @since 4.4.0.0
+             )
 
 #{enum Flag, Flag
  , flagAdd     = EV_ADD
@@ -191,7 +202,11 @@ newtype Filter = Filter Int32
 #else
 newtype Filter = Filter Int16
 #endif
-    deriving (Eq, Num, Show, Storable)
+    deriving ( Eq       -- ^ @since 4.4.0.0
+             , Num      -- ^ @since 4.4.0.0
+             , Show     -- ^ @since 4.4.0.0
+             , Storable -- ^ @since 4.4.0.0
+             )
 
 filterRead :: Filter
 filterRead = Filter (#const EVFILT_READ)
index 013850b..3ee9116 100644 (file)
@@ -110,7 +110,9 @@ data FdData = FdData {
 data FdKey = FdKey {
       keyFd     :: {-# UNPACK #-} !Fd
     , keyUnique :: {-# UNPACK #-} !Unique
-    } deriving (Eq, Show)
+    } deriving ( Eq   -- ^ @since 4.4.0.0
+               , Show -- ^ @since 4.4.0.0
+               )
 
 -- | Callback invoked on I/O events.
 type IOCallback = FdKey -> Event -> IO ()
@@ -120,7 +122,9 @@ data State = Created
            | Dying
            | Releasing
            | Finished
-             deriving (Eq, Show)
+             deriving ( Eq   -- ^ @since 4.4.0.0
+                      , Show -- ^ @since 4.4.0.0
+                      )
 
 -- | The event manager state.
 data EventManager = EventManager
index 74525c6..1dafd60 100644 (file)
@@ -151,10 +151,16 @@ data PollFd = PollFd {
       pfdFd      :: {-# UNPACK #-} !Fd
     , pfdEvents  :: {-# UNPACK #-} !Event
     , pfdRevents :: {-# UNPACK #-} !Event
-    } deriving (Show)
+    } deriving Show -- ^ @since 4.4.0.0
 
 newtype Event = Event CShort
-    deriving (Eq, Show, Num, Storable, Bits, FiniteBits)
+    deriving ( Eq         -- ^ @since 4.4.0.0
+             , Show       -- ^ @since 4.4.0.0
+             , Num        -- ^ @since 4.4.0.0
+             , Storable   -- ^ @since 4.4.0.0
+             , Bits       -- ^ @since 4.4.0.0
+             , FiniteBits -- ^ @since 4.7.0.0
+             )
 
 -- We have to duplicate the whole enum like this in order for the
 -- hsc2hs cross-compilation mode to work
index b7e7615..046f49e 100644 (file)
@@ -67,7 +67,7 @@ import qualified GHC.Event.Poll   as Poll
 
 -- | A timeout registration cookie.
 newtype TimeoutKey   = TK Unique
-    deriving (Eq)
+    deriving Eq -- ^ @since 4.7.0.0
 
 -- | Callback invoked on timeout events.
 type TimeoutCallback = IO ()
@@ -76,7 +76,9 @@ data State = Created
            | Running
            | Dying
            | Finished
-             deriving (Eq, Show)
+             deriving ( Eq   -- ^ @since 4.7.0.0
+                      , Show -- ^ @since 4.7.0.0
+                      )
 
 -- | A priority search queue, with timeouts as priorities.
 type TimeoutQueue = Q.PSQ TimeoutCallback
index 0363af2..1339bd9 100644 (file)
@@ -19,7 +19,10 @@ import GHC.Show(Show(..))
 data UniqueSource = US (MutableByteArray# RealWorld)
 
 newtype Unique = Unique { asInt :: Int }
-    deriving (Eq, Ord, Num)
+    deriving ( Eq  -- ^ @since 4.4.0.0
+             , Ord -- ^ @since 4.4.0.0
+             , Num -- ^ @since 4.4.0.0
+             )
 
 -- | @since 4.3.1.0
 instance Show Unique where
index 37f47a6..df90cb2 100644 (file)
@@ -170,7 +170,9 @@ throw e = raise# (toException e)
 -- | This is thrown when the user calls 'error'. The first @String@ is the
 -- argument given to 'error', second @String@ is the location.
 data ErrorCall = ErrorCallWithLocation String String
-    deriving (Eq, Ord)
+    deriving ( Eq  -- ^ @since 4.7.0.0
+             , Ord -- ^ @since 4.7.0.0
+             )
 
 pattern ErrorCall :: String -> ErrorCall
 pattern ErrorCall err <- ErrorCallWithLocation err _ where
@@ -240,7 +242,9 @@ data ArithException
   | DivideByZero
   | Denormal
   | RatioZeroDenominator -- ^ @since 4.6.0.0
-  deriving (Eq, Ord)
+  deriving ( Eq  -- ^ @since 3.0
+           , Ord -- ^ @since 3.0
+           )
 
 divZeroException, overflowException, ratioZeroDenomException, underflowException  :: SomeException
 divZeroException        = toException DivideByZero
index a306437..11d329a 100755 (executable)
@@ -154,7 +154,9 @@ traceEvent = Debug.Trace.traceEventIO
 -- entire ghc package at runtime
 
 data SpecConstrAnnotation = NoSpecConstr | ForceSpecConstr
-                deriving( Data, Eq )
+                deriving ( Data -- ^ @since 4.3.0.0
+                         , Eq   -- ^ @since 4.3.0.0
+                         )
 
 
 {- **********************************************************************
index 1ad34a7..234bac1 100644 (file)
@@ -22,7 +22,9 @@ import Numeric (showHex)
 -- Using 128-bit MD5 fingerprints for now.
 
 data Fingerprint = Fingerprint {-# UNPACK #-} !Word64 {-# UNPACK #-} !Word64
-  deriving (Eq, Ord)
+  deriving ( Eq  -- ^ @since 4.4.0.0
+           , Ord -- ^ @since 4.4.0.0
+           )
 
 -- | @since 4.7.0.0
 instance Show Fingerprint where
index 3ae9a2c..ff44cf8 100644 (file)
@@ -767,13 +767,15 @@ data V1 (p :: k)
 
 -- | Unit: used for constructors without arguments
 data U1 (p :: k) = U1
-  deriving (Generic, Generic1)
+  deriving ( Generic  -- ^ @since 4.7.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance Eq (U1 p) where
   _ == _ = True
 
--- | @since 4.9.0.0
+-- | @since 4.7.0.0
 instance Ord (U1 p) where
   compare _ _ = EQ
 
@@ -808,7 +810,14 @@ instance MonadPlus U1
 
 -- | Used for marking occurrences of the parameter
 newtype Par1 p = Par1 { unPar1 :: p }
-  deriving (Eq, Ord, Read, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.7.0.0
+           , Ord      -- ^ @since 4.7.0.0
+           , Read     -- ^ @since 4.7.0.0
+           , Show     -- ^ @since 4.7.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.7.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance Applicative Par1 where
@@ -823,7 +832,14 @@ instance Monad Par1 where
 -- | Recursive calls of kind @* -> *@ (or kind @k -> *@, when @PolyKinds@
 -- is enabled)
 newtype Rec1 (f :: k -> *) (p :: k) = Rec1 { unRec1 :: f p }
-  deriving (Eq, Ord, Read, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.7.0.0
+           , Ord      -- ^ @since 4.7.0.0
+           , Read     -- ^ @since 4.7.0.0
+           , Show     -- ^ @since 4.7.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.7.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 deriving instance Applicative f => Applicative (Rec1 f)
@@ -840,7 +856,14 @@ deriving instance MonadPlus f => MonadPlus (Rec1 f)
 
 -- | Constants, additional parameters and recursion of kind @*@
 newtype K1 (i :: *) c (p :: k) = K1 { unK1 :: c }
-  deriving (Eq, Ord, Read, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.7.0.0
+           , Ord      -- ^ @since 4.7.0.0
+           , Read     -- ^ @since 4.7.0.0
+           , Show     -- ^ @since 4.7.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.7.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 deriving instance Applicative f => Applicative (M1 i c f)
@@ -856,17 +879,38 @@ deriving instance MonadPlus f => MonadPlus (M1 i c f)
 
 -- | Meta-information (constructor names, etc.)
 newtype M1 (i :: *) (c :: Meta) (f :: k -> *) (p :: k) = M1 { unM1 :: f p }
-  deriving (Eq, Ord, Read, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.7.0.0
+           , Ord      -- ^ @since 4.7.0.0
+           , Read     -- ^ @since 4.7.0.0
+           , Show     -- ^ @since 4.7.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.7.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | Sums: encode choice between constructors
 infixr 5 :+:
 data (:+:) (f :: k -> *) (g :: k -> *) (p :: k) = L1 (f p) | R1 (g p)
-  deriving (Eq, Ord, Read, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.7.0.0
+           , Ord      -- ^ @since 4.7.0.0
+           , Read     -- ^ @since 4.7.0.0
+           , Show     -- ^ @since 4.7.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.7.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | Products: encode multiple arguments to constructors
 infixr 6 :*:
 data (:*:) (f :: k -> *) (g :: k -> *) (p :: k) = f p :*: g p
-  deriving (Eq, Ord, Read, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.7.0.0
+           , Ord      -- ^ @since 4.7.0.0
+           , Read     -- ^ @since 4.7.0.0
+           , Show     -- ^ @since 4.7.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.7.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance (Applicative f, Applicative g) => Applicative (f :*: g) where
@@ -893,7 +937,14 @@ instance (MonadPlus f, MonadPlus g) => MonadPlus (f :*: g)
 infixr 7 :.:
 newtype (:.:) (f :: k2 -> *) (g :: k1 -> k2) (p :: k1) =
     Comp1 { unComp1 :: f (g p) }
-  deriving (Eq, Ord, Read, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.7.0.0
+           , Ord      -- ^ @since 4.7.0.0
+           , Read     -- ^ @since 4.7.0.0
+           , Show     -- ^ @since 4.7.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.7.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | @since 4.9.0.0
 instance (Applicative f, Applicative g) => Applicative (f :.: g) where
@@ -916,37 +967,70 @@ data family URec (a :: *) (p :: k)
 --
 -- @since 4.9.0.0
 data instance URec (Ptr ()) (p :: k) = UAddr { uAddr# :: Addr# }
-  deriving (Eq, Ord, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | Used for marking occurrences of 'Char#'
 --
 -- @since 4.9.0.0
 data instance URec Char (p :: k) = UChar { uChar# :: Char# }
-  deriving (Eq, Ord, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Show     -- ^ @since 4.9.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | Used for marking occurrences of 'Double#'
 --
 -- @since 4.9.0.0
 data instance URec Double (p :: k) = UDouble { uDouble# :: Double# }
-  deriving (Eq, Ord, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Show     -- ^ @since 4.9.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | Used for marking occurrences of 'Float#'
 --
 -- @since 4.9.0.0
 data instance URec Float (p :: k) = UFloat { uFloat# :: Float# }
-  deriving (Eq, Ord, Show, Functor, Generic, Generic1)
+  deriving ( Eq, Ord, Show
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | Used for marking occurrences of 'Int#'
 --
 -- @since 4.9.0.0
 data instance URec Int (p :: k) = UInt { uInt# :: Int# }
-  deriving (Eq, Ord, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Show     -- ^ @since 4.9.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | Used for marking occurrences of 'Word#'
 --
 -- @since 4.9.0.0
 data instance URec Word (p :: k) = UWord { uWord# :: Word# }
-  deriving (Eq, Ord, Show, Functor, Generic, Generic1)
+  deriving ( Eq       -- ^ @since 4.9.0.0
+           , Ord      -- ^ @since 4.9.0.0
+           , Show     -- ^ @since 4.9.0.0
+           , Functor  -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.9.0.0
+           , Generic1 -- ^ @since 4.9.0.0
+           )
 
 -- | Type synonym for @'URec' 'Addr#'@
 --
@@ -1046,7 +1130,12 @@ instance (KnownSymbol n, SingI f, SingI r)
 -- | Datatype to represent the fixity of a constructor. An infix
 -- | declaration directly corresponds to an application of 'Infix'.
 data Fixity = Prefix | Infix Associativity Int
-  deriving (Eq, Show, Ord, Read, Generic)
+  deriving ( Eq       -- ^ @since 4.6.0.0
+           , Show     -- ^ @since 4.6.0.0
+           , Ord      -- ^ @since 4.6.0.0
+           , Read     -- ^ @since 4.6.0.0
+           , Generic  -- ^ @since 4.7.0.0
+           )
 
 -- | This variant of 'Fixity' appears at the type level.
 --
@@ -1062,7 +1151,15 @@ prec (Infix _ n) = n
 data Associativity = LeftAssociative
                    | RightAssociative
                    | NotAssociative
-  deriving (Eq, Show, Ord, Read, Enum, Bounded, Ix, Generic)
+  deriving ( Eq       -- ^ @since 4.6.0.0
+           , Show     -- ^ @since 4.6.0.0
+           , Ord      -- ^ @since 4.6.0.0
+           , Read     -- ^ @since 4.6.0.0
+           , Enum     -- ^ @since 4.9.0.0
+           , Bounded  -- ^ @since 4.9.0.0
+           , Ix       -- ^ @since 4.9.0.0
+           , Generic  -- ^ @since 4.7.0.0
+           )
 
 -- | The unpackedness of a field as the user wrote it in the source code. For
 -- example, in the following data type:
@@ -1080,7 +1177,15 @@ data Associativity = LeftAssociative
 data SourceUnpackedness = NoSourceUnpackedness
                         | SourceNoUnpack
                         | SourceUnpack
-  deriving (Eq, Show, Ord, Read, Enum, Bounded, Ix, Generic)
+  deriving ( Eq      -- ^ @since 4.9.0.0
+           , Show    -- ^ @since 4.9.0.0
+           , Ord     -- ^ @since 4.9.0.0
+           , Read    -- ^ @since 4.9.0.0
+           , Enum    -- ^ @since 4.9.0.0
+           , Bounded -- ^ @since 4.9.0.0
+           , Ix      -- ^ @since 4.9.0.0
+           , Generic -- ^ @since 4.9.0.0
+           )
 
 -- | The strictness of a field as the user wrote it in the source code. For
 -- example, in the following data type:
@@ -1096,7 +1201,15 @@ data SourceUnpackedness = NoSourceUnpackedness
 data SourceStrictness = NoSourceStrictness
                       | SourceLazy
                       | SourceStrict
-  deriving (Eq, Show, Ord, Read, Enum, Bounded, Ix, Generic)
+  deriving ( Eq      -- ^ @since 4.9.0.0
+           , Show    -- ^ @since 4.9.0.0
+           , Ord     -- ^ @since 4.9.0.0
+           , Read    -- ^ @since 4.9.0.0
+           , Enum    -- ^ @since 4.9.0.0
+           , Bounded -- ^ @since 4.9.0.0
+           , Ix      -- ^ @since 4.9.0.0
+           , Generic -- ^ @since 4.9.0.0
+           )
 
 -- | The strictness that GHC infers for a field during compilation. Whereas
 -- there are nine different combinations of 'SourceUnpackedness' and
@@ -1123,7 +1236,15 @@ data SourceStrictness = NoSourceStrictness
 data DecidedStrictness = DecidedLazy
                        | DecidedStrict
                        | DecidedUnpack
-  deriving (Eq, Show, Ord, Read, Enum, Bounded, Ix, Generic)
+  deriving ( Eq      -- ^ @since 4.9.0.0
+           , Show    -- ^ @since 4.9.0.0
+           , Ord     -- ^ @since 4.9.0.0
+           , Read    -- ^ @since 4.9.0.0
+           , Enum    -- ^ @since 4.9.0.0
+           , Bounded -- ^ @since 4.9.0.0
+           , Ix      -- ^ @since 4.9.0.0
+           , Generic -- ^ @since 4.9.0.0
+           )
 
 -- | Class for datatypes that represent records
 class Selector s where
@@ -1215,31 +1336,80 @@ data Meta = MetaData Symbol Symbol Symbol Bool
 -- Derived instances
 --------------------------------------------------------------------------------
 
+-- | @since 4.6.0.0
 deriving instance Generic [a]
+
+-- | @since 4.6.0.0
 deriving instance Generic (NonEmpty a)
+
+-- | @since 4.6.0.0
 deriving instance Generic (Maybe a)
+
+-- | @since 4.6.0.0
 deriving instance Generic (Either a b)
+
+-- | @since 4.6.0.0
 deriving instance Generic Bool
+
+-- | @since 4.6.0.0
 deriving instance Generic Ordering
+
+-- | @since 4.6.0.0
 deriving instance Generic (Proxy t)
+
+-- | @since 4.6.0.0
 deriving instance Generic ()
+
+-- | @since 4.6.0.0
 deriving instance Generic ((,) a b)
+
+-- | @since 4.6.0.0
 deriving instance Generic ((,,) a b c)
+
+-- | @since 4.6.0.0
 deriving instance Generic ((,,,) a b c d)
+
+-- | @since 4.6.0.0
 deriving instance Generic ((,,,,) a b c d e)
+
+-- | @since 4.6.0.0
 deriving instance Generic ((,,,,,) a b c d e f)
+
+-- | @since 4.6.0.0
 deriving instance Generic ((,,,,,,) a b c d e f g)
 
+
+-- | @since 4.6.0.0
 deriving instance Generic1 []
+
+-- | @since 4.6.0.0
 deriving instance Generic1 NonEmpty
+
+-- | @since 4.6.0.0
 deriving instance Generic1 Maybe
+
+-- | @since 4.6.0.0
 deriving instance Generic1 (Either a)
+
+-- | @since 4.6.0.0
 deriving instance Generic1 Proxy
+
+-- | @since 4.6.0.0
 deriving instance Generic1 ((,) a)
+
+-- | @since 4.6.0.0
 deriving instance Generic1 ((,,) a b)
+
+-- | @since 4.6.0.0
 deriving instance Generic1 ((,,,) a b c)
+
+-- | @since 4.6.0.0
 deriving instance Generic1 ((,,,,) a b c d)
+
+-- | @since 4.6.0.0
 deriving instance Generic1 ((,,,,,) a b c d e)
+
+-- | @since 4.6.0.0
 deriving instance Generic1 ((,,,,,,) a b c d e f)
 
 --------------------------------------------------------------------------------
index 8d69b70..05ad277 100644 (file)
@@ -279,7 +279,9 @@ data MaskingState
       -- ^ the state during 'mask': asynchronous exceptions are masked, but blocking operations may still be interrupted
   | MaskedUninterruptible
       -- ^ the state during 'uninterruptibleMask': asynchronous exceptions are masked, and blocking operations may not be interrupted
- deriving (Eq,Show)
+ deriving ( Eq   -- ^ @since 4.3.0.0
+          , Show -- ^ @since 4.3.0.0
+          )
 
 -- | Returns the 'MaskingState' for the current thread.
 getMaskingState :: IO MaskingState
index f3cabb2..447c574 100644 (file)
@@ -192,7 +192,8 @@ type CharBuffer = Buffer Word16
 type CharBuffer = Buffer Char
 #endif
 
-data BufferState = ReadBuffer | WriteBuffer deriving (Eq)
+data BufferState = ReadBuffer | WriteBuffer
+  deriving Eq -- ^ @since 4.2.0.0
 
 withBuffer :: Buffer e -> (Ptr e -> IO a) -> IO a
 withBuffer Buffer{ bufRaw=raw } f = withForeignPtr (castForeignPtr raw) f
index ddeb861..1f6304b 100644 (file)
@@ -154,7 +154,8 @@ data IODeviceType
               -- read and write operations and may be seekable only
               -- to positions of certain granularity (block-
               -- aligned).
-  deriving (Eq)
+  deriving ( Eq -- ^ @since 4.2.0.0
+           )
 
 -- -----------------------------------------------------------------------------
 -- SeekMode type
@@ -166,5 +167,11 @@ data SeekMode
                         -- from the current position.
   | SeekFromEnd         -- ^ the position of @hdl@ is set to offset @i@
                         -- from the end of the file.
-    deriving (Eq, Ord, Ix, Enum, Read, Show)
+    deriving ( Eq   -- ^ @since 4.2.0.0
+             , Ord  -- ^ @since 4.2.0.0
+             , Ix   -- ^ @since 4.2.0.0
+             , Enum -- ^ @since 4.2.0.0
+             , Read -- ^ @since 4.2.0.0
+             , Show -- ^ @since 4.2.0.0
+             )
 
index 3f9360d..3047d49 100644 (file)
@@ -48,7 +48,8 @@ data CodingFailureMode
   | RoundtripFailure
        -- ^ Use the private-use escape mechanism to attempt to allow
        -- illegal sequences to be roundtripped.
-  deriving (Show)
+  deriving ( Show -- ^ @since 4.4.0.0
+           )
        -- This will only work properly for those encodings which are
        -- strict supersets of ASCII in the sense that valid ASCII data
        -- is also valid in that encoding. This is not true for
index daab9d5..d6e0089 100644 (file)
@@ -129,5 +129,7 @@ data CodingProgress = InputUnderflow  -- ^ Stopped because the input contains in
                     | InvalidSequence -- ^ Stopped because there are sufficient free elements in the output
                                       -- to output at least one encoded ASCII character, but the input contains
                                       -- an invalid or unrepresentable sequence
-                    deriving (Eq, Show)
+                    deriving ( Eq   -- ^ @since 4.4.0.0
+                             , Show -- ^ @since 4.4.0.0
+                             )
 
index 020bc06..f6b60a4 100644 (file)
@@ -226,7 +226,9 @@ data AsyncException
         -- ^This exception is raised by default in the main thread of
         -- the program when the user requests to terminate the program
         -- via the usual mechanism(s) (e.g. Control-C in the console).
-  deriving (Eq, Ord)
+  deriving ( Eq  -- ^ @since 4.2.0.0
+           , Ord -- ^ @since 4.2.0.0
+           )
 
 -- | @since 4.7.0.0
 instance Exception AsyncException where
@@ -241,7 +243,9 @@ data ArrayException
   | UndefinedElement    String
         -- ^An attempt was made to evaluate an element of an
         -- array that had not been initialized.
-  deriving (Eq, Ord)
+  deriving ( Eq  -- ^ @since 4.2.0.0
+           , Ord -- ^ @since 4.2.0.0
+           )
 
 -- | @since 4.1.0.0
 instance Exception ArrayException
index b0a3449..ec85ffd 100644 (file)
@@ -63,8 +63,9 @@ import GHC.Show
 -- | Exception thrown by 'hLock' on non-Windows platforms that don't support
 -- 'flock'.
 data FileLockingNotSupported = FileLockingNotSupported
-  deriving Show
+  deriving Show -- ^ @since 4.10.0.0
 
+-- ^ @since 4.10.0.0
 instance Exception FileLockingNotSupported
 
 -- | Indicates a mode in which a file should be locked.
index c58a9fb..d38962e 100644 (file)
@@ -247,7 +247,11 @@ data BufferMode
                 -- ^ block-buffering should be enabled if possible.
                 -- The size of the buffer is @n@ items if the argument
                 -- is 'Just' @n@ and is otherwise implementation-dependent.
-   deriving (Eq, Ord, Read, Show)
+   deriving ( Eq   -- ^ @since 4.2.0.0
+            , Ord  -- ^ @since 4.2.0.0
+            , Read -- ^ @since 4.2.0.0
+            , Show -- ^ @since 4.2.0.0
+            )
 
 {-
 [note Buffering Implementation]
@@ -349,7 +353,11 @@ and hence it is only possible on a seekable Handle.
 -- | The representation of a newline in the external file or stream.
 data Newline = LF    -- ^ '\n'
              | CRLF  -- ^ '\r\n'
-             deriving (Eq, Ord, Read, Show)
+             deriving ( Eq   -- ^ @since 4.2.0.0
+                      , Ord  -- ^ @since 4.3.0.0
+                      , Read -- ^ @since 4.3.0.0
+                      , Show -- ^ @since 4.3.0.0
+                      )
 
 -- | Specifies the translation, if any, of newline characters between
 -- internal Strings and the external file or stream.  Haskell Strings
@@ -362,7 +370,11 @@ data NewlineMode
                   outputNL :: Newline
                     -- ^ the representation of newlines on output
                  }
-             deriving (Eq, Ord, Read, Show)
+             deriving ( Eq   -- ^ @since 4.2.0.0
+                      , Ord  -- ^ @since 4.3.0.0
+                      , Read -- ^ @since 4.3.0.0
+                      , Show -- ^ @since 4.3.0.0
+                      )
 
 -- | The native newline representation for the current platform: 'LF'
 -- on Unix systems, 'CRLF' on Windows.
index 42cc9f3..7eb848f 100644 (file)
@@ -26,5 +26,11 @@ import GHC.Enum
 
 -- | See 'System.IO.openFile'
 data IOMode      =  ReadMode | WriteMode | AppendMode | ReadWriteMode
-                    deriving (Eq, Ord, Ix, Enum, Read, Show)
+                    deriving ( Eq   -- ^ @since 4.2.0.0
+                             , Ord  -- ^ @since 4.2.0.0
+                             , Ix   -- ^ @since 4.2.0.0
+                             , Enum -- ^ @since 4.2.0.0
+                             , Read -- ^ @since 4.2.0.0
+                             , Show -- ^ @since 4.2.0.0
+                             )
 
index 0832be0..7377690 100644 (file)
@@ -31,7 +31,7 @@ import GHC.IO
 
 -- |A mutable variable in the 'IO' monad
 newtype IORef a = IORef (STRef RealWorld a)
-  deriving Eq
+  deriving Eq -- ^ @since 4.2.0.0
   -- ^ Pointer equality.
   --
   -- @since 4.1.0.0
index 7e6d0a1..32cf2d2 100644 (file)
@@ -101,8 +101,12 @@ data Natural = NatS#                 GmpLimb# -- ^ in @[0, maxBound::Word]@
                                               -- __Invariant__: 'NatJ#' is used
                                               -- /iff/ value doesn't fit in
                                               -- 'NatS#' constructor.
-             deriving (Eq,Ord) -- NB: Order of constructors *must*
+                               -- NB: Order of constructors *must*
                                -- coincide with 'Ord' relation
+             deriving ( Eq  -- ^ @since 4.8.0.0
+                      , Ord -- ^ @since 4.8.0.0
+                      )
+
 
 -- | Test whether all internal invariants are satisfied by 'Natural' value
 --
index 93f6d64..f7caf16 100644 (file)
@@ -42,7 +42,10 @@ import Numeric          ( showHex )
 
 -- redundant role annotation checks that this doesn't change
 type role Ptr phantom
-data Ptr a = Ptr Addr# deriving (Eq, Ord)
+data Ptr a = Ptr Addr#
+  deriving ( Eq  -- ^ @since 2.01
+           , Ord -- ^ @since 2.01
+           )
 -- ^ A value of type @'Ptr' a@ represents a pointer to an object, or an
 -- array of objects, which may be marshalled to or from Haskell values
 -- of type @a@.
index 1f997c8..3e712ca 100644 (file)
@@ -66,7 +66,8 @@ data GiveGCStats
     | OneLineGCStats
     | SummaryGCStats
     | VerboseGCStats
-    deriving (Show)
+    deriving ( Show -- ^ @since 4.8.0.0
+             )
 
 -- | @since 4.8.0.0
 instance Enum GiveGCStats where
@@ -115,7 +116,8 @@ data GCFlags = GCFlags
     , allocLimitGrace       :: Word
     , numa                  :: Bool
     , numaMask              :: Word
-    } deriving (Show)
+    } deriving ( Show -- ^ @since 4.8.0.0
+               )
 
 -- | Parameters concerning context switching
 --
@@ -123,7 +125,8 @@ data GCFlags = GCFlags
 data ConcFlags = ConcFlags
     { ctxtSwitchTime  :: RtsTime
     , ctxtSwitchTicks :: Int
-    } deriving (Show)
+    } deriving ( Show -- ^ @since 4.8.0.0
+               )
 
 -- | Miscellaneous parameters
 --
@@ -137,7 +140,8 @@ data MiscFlags = MiscFlags
     , machineReadable       :: Bool
     , linkerMemBase         :: Word
       -- ^ address to ask the OS for memory for the linker, 0 ==> off
-    } deriving (Show)
+    } deriving ( Show -- ^ @since 4.8.0.0
+               )
 
 -- | Flags to control debugging output & extra checking in various
 -- subsystems.
@@ -159,7 +163,8 @@ data DebugFlags = DebugFlags
     , squeeze     :: Bool -- ^ 'z' stack squeezing & lazy blackholing
     , hpc         :: Bool -- ^ 'c' coverage
     , sparks      :: Bool -- ^ 'r'
-    } deriving (Show)
+    } deriving ( Show -- ^ @since 4.8.0.0
+               )
 
 -- | Should the RTS produce a cost-center summary?
 --
@@ -170,7 +175,8 @@ data DoCostCentres
     | CostCentresVerbose
     | CostCentresAll
     | CostCentresJSON
-    deriving (Show)
+    deriving ( Show -- ^ @since 4.8.0.0
+             )
 
 -- | @since 4.8.0.0
 instance Enum DoCostCentres where
@@ -194,7 +200,8 @@ data CCFlags = CCFlags
     { doCostCentres :: DoCostCentres
     , profilerTicks :: Int
     , msecsPerTick  :: Int
-    } deriving (Show)
+    } deriving ( Show -- ^ @since 4.8.0.0
+               )
 
 -- | What sort of heap profile are we collecting?
 --
@@ -208,7 +215,8 @@ data DoHeapProfile
     | HeapByRetainer
     | HeapByLDV
     | HeapByClosureType
-    deriving (Show)
+    deriving ( Show -- ^ @since 4.8.0.0
+             )
 
 -- | @since 4.8.0.0
 instance Enum DoHeapProfile where
@@ -249,7 +257,8 @@ data ProfFlags = ProfFlags
     , ccsSelector              :: Maybe String
     , retainerSelector         :: Maybe String
     , bioSelector              :: Maybe String
-    } deriving (Show)
+    } deriving ( Show -- ^ @since 4.8.0.0
+               )
 
 -- | Is event tracing enabled?
 --
@@ -258,7 +267,8 @@ data DoTrace
     = TraceNone      -- ^ no tracing
     | TraceEventLog  -- ^ send tracing events to the event log
     | TraceStderr    -- ^ send tracing events to @stderr@
-    deriving (Show)
+    deriving ( Show -- ^ @since 4.8.0.0
+             )
 
 -- | @since 4.8.0.0
 instance Enum DoTrace where
@@ -282,7 +292,8 @@ data TraceFlags = TraceFlags
     , sparksSampled  :: Bool -- ^ trace spark events by a sampled method
     , sparksFull     :: Bool -- ^ trace spark events 100% accurately
     , user           :: Bool -- ^ trace user events (emitted from Haskell code)
-    } deriving (Show)
+    } deriving ( Show -- ^ @since 4.8.0.0
+               )
 
 -- | Parameters pertaining to ticky-ticky profiler
 --
@@ -290,7 +301,8 @@ data TraceFlags = TraceFlags
 data TickyFlags = TickyFlags
     { showTickyStats :: Bool
     , tickyFile      :: Maybe FilePath
-    } deriving (Show)
+    } deriving ( Show -- ^ @since 4.8.0.0
+               )
 
 -- | Parameters pertaining to parallelism
 --
@@ -307,7 +319,8 @@ data ParFlags = ParFlags
     , parGcThreads :: Word32
     , setAffinity :: Bool
     }
-    deriving (Show)
+    deriving ( Show -- ^ @since 4.8.0.0
+             )
 
 -- | Parameters of the runtime system
 --
@@ -322,7 +335,8 @@ data RTSFlags = RTSFlags
     , traceFlags      :: TraceFlags
     , tickyFlags      :: TickyFlags
     , parFlags        :: ParFlags
-    } deriving (Show)
+    } deriving ( Show -- ^ @since 4.8.0.0
+               )
 
 foreign import ccall "&RtsFlags" rtsFlagsPtr :: Ptr RTSFlags
 
index 8160a2a..ad51c46 100644 (file)
@@ -409,6 +409,7 @@ readSymField fieldName readVal = do
 -- Simple instances of Read
 --------------------------------------------------------------
 
+-- | @since 2.01
 deriving instance Read GeneralCategory
 
 -- | @since 2.01
@@ -458,6 +459,7 @@ instance Read Ordering where
   readListPrec = readListPrecDefault
   readList     = readListDefault
 
+-- | @since 4.11.0.0
 deriving instance Read a => Read (NonEmpty a)
 
 --------------------------------------------------------------
index 4ab4b2f..938dff6 100644 (file)
@@ -66,7 +66,7 @@ overflowError = raise# overflowException
 --------------------------------------------------------------
 
 -- | Rational numbers, with numerator and denominator of some 'Integral' type.
-data  Ratio a = !a :% !a  deriving (Eq)
+data  Ratio a = !a :% !a  deriving Eq -- ^ @since 2.01
 
 -- | Arbitrary-precision rational numbers, represented as a ratio of
 -- two 'Integer' values.  A rational number may be constructed using
index d1c6075..a7a7f89 100644 (file)
@@ -165,6 +165,7 @@ appPrec1 = I# 11#       -- appPrec + 1
 -- Simple Instances
 --------------------------------------------------------------
 
+-- | @since 2.01
 deriving instance Show ()
 
 -- | @since 2.01
@@ -174,7 +175,10 @@ instance Show a => Show [a]  where
   {-# SPECIALISE instance Show [Int] #-}
   showsPrec _         = showList
 
+-- | @since 2.01
 deriving instance Show Bool
+
+-- | @since 2.01
 deriving instance Show Ordering
 
 -- | @since 2.01
@@ -199,7 +203,10 @@ showWord w# cs
                c# ->
                    showWord (w# `quotWord#` 10##) (C# c# : cs)
 
+-- | @since 2.01
 deriving instance Show a => Show (Maybe a)
+
+-- | @since 4.11.0.0
 deriving instance Show a => Show (NonEmpty a)
 
 -- | @since 2.01
@@ -219,6 +226,7 @@ instance Show Module where
 instance Show CallStack where
   showsPrec _ = shows . getCallStack
 
+-- | @since 4.9.0.0
 deriving instance Show SrcLoc
 
 --------------------------------------------------------------
@@ -581,7 +589,14 @@ instance Show KindRep where
       . showString " "
       . showsPrec 11 q
 
+-- | @since 4.11.0.0
 deriving instance Show RuntimeRep
+
+-- | @since 4.11.0.0
 deriving instance Show VecCount
+
+-- | @since 4.11.0.0
 deriving instance Show VecElem
+
+-- | @since 4.11.0.0
 deriving instance Show TypeLitSort
index 73095bd..516b816 100644 (file)
@@ -101,7 +101,7 @@ castStablePtrToPtr (StablePtr s) = Ptr (unsafeCoerce# s)
 castPtrToStablePtr :: Ptr () -> StablePtr a
 castPtrToStablePtr (Ptr a) = StablePtr (unsafeCoerce# a)
 
--- | @since 2.1
+-- | @since 2.01
 instance Eq (StablePtr a) where
     (StablePtr sp1) == (StablePtr sp2) =
         case eqStablePtr# sp1 sp2 of
index b5858f2..d40342c 100644 (file)
@@ -215,4 +215,4 @@ data SrcLoc = SrcLoc
   , srcLocStartCol  :: Int
   , srcLocEndLine   :: Int
   , srcLocEndCol    :: Int
-  } deriving Eq
+  } deriving Eq -- ^ @since 4.9.0.0
index 92829ac..34f720d 100644 (file)
@@ -115,7 +115,7 @@ data StaticPtrInfo = StaticPtrInfo
       -- @(Line, Column)@ pair.
     , spInfoSrcLoc     :: (Int, Int)
     }
-  deriving (Show)
+  deriving Show -- ^ @since 4.8.0.0
 
 -- | 'StaticPtrInfo' of the given 'StaticPtr'.
 staticPtrInfo :: StaticPtr a -> StaticPtrInfo
index 94d04a8..3497ff5 100644 (file)
@@ -98,7 +98,9 @@ data RTSStats = RTSStats {
 
     -- | Details about the most recent GC
   , gc :: GCDetails
-  } deriving (Read, Show)
+  } deriving ( Read -- ^ @since 4.10.0.0
+             , Show -- ^ @since 4.10.0.0
+             )
 
 --
 -- | Statistics about a single GC.  This is a mirror of the C @struct
@@ -135,7 +137,9 @@ data GCDetails = GCDetails {
   , gcdetails_cpu_ns :: RtsTime
     -- | The time elapsed during GC itself
   , gcdetails_elapsed_ns :: RtsTime
-  } deriving (Read, Show)
+  } deriving ( Read -- ^ @since 4.10.0.0
+             , Show -- ^ @since 4.10.0.0
+             )
 
 -- | Time values from the RTS, using a fixed resolution of nanoseconds.
 type RtsTime = Int64
index 0e2ce4c..1b8cd05 100644 (file)
@@ -7,7 +7,7 @@
 -- Module      :  GHC.Unicode
 -- Copyright   :  (c) The University of Glasgow, 2003
 -- License     :  see libraries/base/LICENSE
--- 
+--
 -- Maintainer  :  cvs-ghc@haskell.org
 -- Stability   :  internal
 -- Portability :  non-portable (GHC extensions)
@@ -129,7 +129,13 @@ data GeneralCategory
         | Surrogate             -- ^ Cs: Other, Surrogate
         | PrivateUse            -- ^ Co: Other, Private Use
         | NotAssigned           -- ^ Cn: Other, Not Assigned
-        deriving (Show, Eq, Ord, Enum, Bounded, Ix)
+        deriving ( Show     -- ^ @since 2.01
+                 , Eq       -- ^ @since 2.01
+                 , Ord      -- ^ @since 2.01
+                 , Enum     -- ^ @since 2.01
+                 , Bounded  -- ^ @since 2.01
+                 , Ix       -- ^ @since 2.01
+                 )
 
 -- | The Unicode general category of the character. This relies on the
 -- 'Enum' instance of 'GeneralCategory', which must remain in the
@@ -394,4 +400,3 @@ foreign import ccall unsafe "u_towtitle"
 
 foreign import ccall unsafe "u_gencat"
   wgencat :: Int -> Int
-
index 06d6e5f..e2b8565 100644 (file)
@@ -35,9 +35,9 @@ import Data.Unique         (Unique, newUnique)
 -- interrupt the running IO computation when the timeout has
 -- expired.
 
-newtype Timeout = Timeout Unique deriving (Eq)
+newtype Timeout = Timeout Unique deriving Eq -- ^ @since 4.0
 
--- | @since 3.0
+-- | @since 4.0
 instance Show Timeout where
     show _ = "<<timeout>>"
 
index dd51f64..063c089 100644 (file)
@@ -100,7 +100,7 @@ data P a
   | Fail
   | Result a (P a)
   | Final [(a,String)] -- invariant: list is non-empty!
-  deriving Functor
+  deriving Functor -- ^ @since 4.8.0.0
 
 -- Monad, MonadPlus
 
index d0d39c6..7568f9a 100644 (file)
@@ -68,15 +68,19 @@ data Lexeme
   | Symbol String       -- ^ Haskell symbol, e.g. @>>@, @:%@
   | Number Number       -- ^ @since 4.6.0.0
   | EOF
- deriving (Eq, Show)
+ deriving ( Eq   -- ^ @since 2.01
+          , Show -- ^ @since 2.01
+          )
 
--- | @since 4.7.0.0
+-- | @since 4.6.0.0
 data Number = MkNumber Int              -- Base
                        Digits           -- Integral part
             | MkDecimal Digits          -- Integral part
                         (Maybe Digits)  -- Fractional part
                         (Maybe Integer) -- Exponent
- deriving (Eq, Show)
+ deriving ( Eq   -- ^ @since 4.6.0.0
+          , Show -- ^ @since 4.6.0.0
+          )
 
 -- | @since 4.5.1.0
 numberToInteger :: Number -> Maybe Integer