Hello community,

here is the log from the commit of package ghc-semigroups for openSUSE:Factory 
checked in at 2017-08-31 20:59:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-semigroups (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-semigroups.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-semigroups"

Thu Aug 31 20:59:03 2017 rev:10 rq:513481 version:0.18.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-semigroups/ghc-semigroups.changes    
2016-10-22 13:20:39.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-semigroups.new/ghc-semigroups.changes       
2017-08-31 20:59:04.385417174 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:53 UTC 2017 - [email protected]
+
+- Update to version 0.18.3.
+
+-------------------------------------------------------------------

Old:
----
  semigroups-0.18.2.tar.gz

New:
----
  semigroups-0.18.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-semigroups.spec ++++++
--- /var/tmp/diff_new_pack.R8G0q1/_old  2017-08-31 20:59:05.649239603 +0200
+++ /var/tmp/diff_new_pack.R8G0q1/_new  2017-08-31 20:59:05.657238479 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-semigroups
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %global pkg_name semigroups
 Name:           ghc-%{pkg_name}
-Version:        0.18.2
+Version:        0.18.3
 Release:        0
 Summary:        Anything that associates
 License:        BSD-3-Clause

++++++ semigroups-0.18.2.tar.gz -> semigroups-0.18.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/semigroups-0.18.2/.travis.yml 
new/semigroups-0.18.3/.travis.yml
--- old/semigroups-0.18.2/.travis.yml   2016-06-23 04:12:10.000000000 +0200
+++ new/semigroups-0.18.3/.travis.yml   2017-04-16 18:47:49.000000000 +0200
@@ -21,21 +21,30 @@
 
 matrix:
   include:
-    - env: CABALVER=1.16 GHCVER=7.0.4
+    - env: CABALVER=1.18 GHCVER=7.0.4
       compiler: ": #GHC 7.0.4"
-      addons: {apt: {packages: [cabal-install-1.16,ghc-7.0.4], sources: 
[hvr-ghc]}}
-    - env: CABALVER=1.16 GHCVER=7.4.2
+      addons: {apt: {packages: [cabal-install-1.18,ghc-7.0.4], sources: 
[hvr-ghc]}}
+    - env: CABALVER=1.18 GHCVER=7.2.2
+      compiler: ": #GHC 7.2.2"
+      addons: {apt: {packages: [cabal-install-1.18,ghc-7.2.2], sources: 
[hvr-ghc]}}
+    - env: CABALVER=1.18 GHCVER=7.4.2
       compiler: ": #GHC 7.4.2"
-      addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2], sources: 
[hvr-ghc]}}
-    - env: CABALVER=1.16 GHCVER=7.6.3
+      addons: {apt: {packages: [cabal-install-1.18,ghc-7.4.2], sources: 
[hvr-ghc]}}
+    - env: CABALVER=1.18 GHCVER=7.6.3
       compiler: ": #GHC 7.6.3"
-      addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3], sources: 
[hvr-ghc]}}
+      addons: {apt: {packages: [cabal-install-1.18,ghc-7.6.3], sources: 
[hvr-ghc]}}
     - env: CABALVER=1.18 GHCVER=7.8.4
       compiler: ": #GHC 7.8.4"
       addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4], sources: 
[hvr-ghc]}}
-    - env: CABALVER=1.22 GHCVER=7.10.2
-      compiler: ": #GHC 7.10.2"
-      addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.2], sources: 
[hvr-ghc]}}
+    - env: CABALVER=1.22 GHCVER=7.10.3
+      compiler: ": #GHC 7.10.3"
+      addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: 
[hvr-ghc]}}
+    - env: CABALVER=1.24 GHCVER=8.0.2
+      compiler: ": #GHC 8.0.2"
+      addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2], sources: 
[hvr-ghc]}}
+    - env: CABALVER=2.0 GHCVER=8.2.1
+      compiler: ": #GHC 8.2.1"
+      addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.1], sources: 
[hvr-ghc]}}
     - env: CABALVER=head GHCVER=head
       compiler: ": #GHC head"
       addons: {apt: {packages: [cabal-install-head,ghc-head], sources: 
[hvr-ghc]}}
@@ -71,9 +80,9 @@
      echo "cabal build-cache MISS";
      rm -rf $HOME/.cabsnap;
      mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;
-     cabal install --only-dependencies --enable-tests --enable-benchmarks;
+     cabal install -j --only-dependencies --enable-tests --enable-benchmarks;
    fi
- 
+
 # snapshot package-db on cache miss
  - if [ ! -d $HOME/.cabsnap ];
    then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/semigroups-0.18.2/CHANGELOG.markdown 
new/semigroups-0.18.3/CHANGELOG.markdown
--- old/semigroups-0.18.2/CHANGELOG.markdown    2016-06-23 04:12:10.000000000 
+0200
+++ new/semigroups-0.18.3/CHANGELOG.markdown    2017-04-16 18:47:49.000000000 
+0200
@@ -1,3 +1,11 @@
+0.18.3
+------
+* Add `Semigroup` instance for `IO`, as well as for `Event` and `Lifetime` from
+  `GHC.Event`
+* Add `Eq1`, `Ord1`, `Read1`, and `Show1` instances for `NonEmpty`
+* Define `Generic` and `Generic1` instances back to GHC 7.2, and expose the
+  `Data.Semigroup.Generic` module on GHC 7.2
+
 0.18.2
 ------
 * Depend on the `bytestring-builder` package to ensure `Semigroup` instances 
for bytestring `Builder` and `ShortByteString` are always defined
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/semigroups-0.18.2/semigroups.cabal 
new/semigroups-0.18.3/semigroups.cabal
--- old/semigroups-0.18.2/semigroups.cabal      2016-06-23 04:12:10.000000000 
+0200
+++ new/semigroups-0.18.3/semigroups.cabal      2017-04-16 18:47:49.000000000 
+0200
@@ -1,6 +1,6 @@
 name:          semigroups
 category:      Algebra, Data, Data Structures, Math
-version:       0.18.2
+version:       0.18.3
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -50,17 +50,17 @@
 
 flag bytestring-builder
   description:
-    You can disable the use of the `bytestring-builder` package using 
`-f-bytestring-builder`.
+    Decides whether to use an older version of bytestring along with 
bytestring-builder or just a newer version of bytestring.
     .
-    Disabling this is an unsupported configuration, but it may be useful for 
accelerating builds in sandboxes for expert users.
-  default: True
+    This flag normally toggles automatically but you can use 
`-fbytestring-builder` or `-f-bytestring-builder` to explicitly change it.
+  default: False
   manual: False
 
 flag containers
   description:
     You can disable the use of the `containers` package using `-f-containers`.
     .
-    Disabing this is an unsupported configuration, but it may be useful for 
accelerating builds in sandboxes for expert users.
+    Disabling this is an unsupported configuration, but it may be useful for 
accelerating builds in sandboxes for expert users.
   default: True
   manual: True
 
@@ -68,7 +68,7 @@
   description:
     You can disable the use of the `deepseq` package using `-f-deepseq`.
     .
-    Disabing this is an unsupported configuration, but it may be useful for 
accelerating builds in sandboxes for expert users.
+    Disabling this is an unsupported configuration, but it may be useful for 
accelerating builds in sandboxes for expert users.
   default: True
   manual: True
 
@@ -90,7 +90,7 @@
 
 flag transformers
   description:
-    You can disable the use of the `transformers` package using 
`-f-transformers`.
+    You can disable the use of the `transformers` and `transformers-compat` 
packages using `-f-transformers`.
     .
     Disabling this is an unsupported configuration, but it may be useful for 
accelerating builds in sandboxes for expert users.
   default: True
@@ -111,7 +111,7 @@
 
   build-depends: base >= 2 && < 5
 
-  if impl(ghc >= 7.4)
+  if impl(ghc >= 7.2)
     exposed-modules:
       Data.Semigroup.Generic
 
@@ -127,7 +127,7 @@
     if impl(ghc < 7.10)
       build-depends: nats >= 0.1 && < 2
 
-    if impl(ghc >= 7.4 && < 7.5)
+    if impl(ghc >= 7.2 && < 7.5)
       build-depends: ghc-prim
 
     if flag(binary)
@@ -159,4 +159,5 @@
       build-depends: unordered-containers >= 0.2  && < 0.3
 
     if flag(transformers)
-      build-depends: transformers >= 0.2 && < 0.6
+      build-depends: transformers        >= 0.2 && < 0.6
+                   , transformers-compat >= 0.5 && < 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/semigroups-0.18.2/src/Data/Semigroup/Generic.hs 
new/semigroups-0.18.3/src/Data/Semigroup/Generic.hs
--- old/semigroups-0.18.2/src/Data/Semigroup/Generic.hs 2016-06-23 
04:12:10.000000000 +0200
+++ new/semigroups-0.18.3/src/Data/Semigroup/Generic.hs 2017-04-16 
18:47:49.000000000 +0200
@@ -1,6 +1,11 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE FlexibleContexts #-}
+#if __GLASGOW_HASKELL__ >= 704
 {-# LANGUAGE Safe #-}
+#else
+{-# LANGUAGE Trustworthy #-}
+#endif
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Data.Semigroup.Generic
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/semigroups-0.18.2/src-ghc7/Data/List/NonEmpty.hs 
new/semigroups-0.18.3/src-ghc7/Data/List/NonEmpty.hs
--- old/semigroups-0.18.2/src-ghc7/Data/List/NonEmpty.hs        2016-06-23 
04:12:10.000000000 +0200
+++ new/semigroups-0.18.3/src-ghc7/Data/List/NonEmpty.hs        2017-04-16 
18:47:49.000000000 +0200
@@ -1,7 +1,8 @@
 {-# LANGUAGE CPP #-}
 
 #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 702
-#if defined(MIN_VERSION_hashable) || __GLASGOW_HASKELL__ >= 708
+#if defined(MIN_VERSION_hashable) || __GLASGOW_HASKELL__ == 702 \
+                                  || __GLASGOW_HASKELL__ >= 708
 {-# LANGUAGE Trustworthy #-}
 #else
 {-# LANGUAGE Safe #-}
@@ -13,13 +14,12 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 #endif
 
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 704
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 702
 #define LANGUAGE_DeriveGeneric
 {-# LANGUAGE DeriveGeneric #-}
-#endif
-
-#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 708
+{-# LANGUAGE EmptyDataDecls #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 #endif
 
 #ifndef MIN_VERSION_base
@@ -136,7 +136,7 @@
 #endif
 
 #ifdef LANGUAGE_DeriveDataTypeable
-import Data.Data
+import Data.Data hiding (Infix)
 #endif
 
 #if MIN_VERSION_base(4,8,0)
@@ -153,6 +153,10 @@
 import Data.Hashable
 #endif
 
+#ifdef MIN_VERSION_transformers
+import Data.Functor.Classes (Eq1(..), Ord1(..), Read1(..), Show1(..))
+#endif
+
 import qualified Data.List as List
 import Data.Ord (comparing)
 
@@ -198,6 +202,28 @@
   toList = toList
 #endif
 
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 702 && 
__GLASGOW_HASKELL__ < 706
+instance Generic1 NonEmpty where
+  type Rep1 NonEmpty
+    = D1 D1NonEmpty
+        (C1 C1_0NonEmpty
+             (S1 NoSelector Par1
+          :*: S1 NoSelector (Rec1 [])))
+  from1 (h :| t) = M1 (M1 (M1 (Par1 h) :*: M1 (Rec1 t)))
+  to1 (M1 (M1 (M1 h :*: M1 t))) = unPar1 h :| unRec1 t
+
+instance Datatype D1NonEmpty where
+  datatypeName _ = "NonEmpty"
+  moduleName   _ = "Data.List.NonEmpty"
+
+instance Constructor C1_0NonEmpty where
+  conName   _ = ":|"
+  conFixity _ = Infix RightAssociative 5
+
+data D1NonEmpty
+data C1_0NonEmpty
+#endif
+
 #ifdef MIN_VERSION_deepseq
 instance NFData a => NFData (NonEmpty a) where
   rnf (x :| xs) = rnf x `seq` rnf xs
@@ -214,6 +240,44 @@
   munzip   = unzip
 #endif
 
+#ifdef MIN_VERSION_transformers
+# if !(MIN_VERSION_transformers(0,4,0)) || MIN_VERSION_transformers(0,5,0)
+instance Eq1 NonEmpty where
+  liftEq eq (a :| as) (b :| bs) = eq a b && liftEq eq as bs
+
+instance Ord1 NonEmpty where
+  liftCompare cmp (a :| as) (b :| bs) = cmp a b `mappend` liftCompare cmp as bs
+
+instance Read1 NonEmpty where
+  liftReadsPrec rdP rdL p s = readParen (p > 5) (\s' -> do
+    (a, s'') <- rdP 6 s'
+    (":|", s''') <- lex s''
+    (as, s'''') <- rdL s'''
+    return (a :| as, s'''')) s
+
+instance Show1 NonEmpty where
+  liftShowsPrec shwP shwL p (a :| as) = showParen (p > 5) $
+    shwP 6 a . showString " :| " . shwL as
+# else
+instance Eq1 NonEmpty where
+  eq1 (a :| as) (b :| bs) = a == b && as == bs
+
+instance Ord1 NonEmpty where
+  compare1 (a :| as) (b :| bs) = compare a b `mappend` compare as bs
+
+instance Read1 NonEmpty where
+  readsPrec1 p s = readParen (p > 5) (\s' -> do
+    (a, s'') <- readsPrec 6 s'
+    (":|", s''') <- lex s''
+    (as, s'''') <- readList s'''
+    return (a :| as, s'''')) s
+
+instance Show1 NonEmpty where
+  showsPrec1 p (a :| as) = showParen (p > 5) $
+    showsPrec 6 a . showString " :| " . showList as
+# endif
+#endif
+
 length :: NonEmpty a -> Int
 length (_ :| xs) = 1 + Prelude.length xs
 {-# INLINE length #-}
@@ -277,6 +341,10 @@
   foldl1 f ~(a :| as) = foldl f a as
   foldMap f ~(a :| as) = f a `mappend` foldMap f as
   fold ~(m :| ms) = m `mappend` fold ms
+#if MIN_VERSION_base(4,8,0)
+  length = length
+  toList = toList
+#endif
 
 -- | Extract the first element of the stream.
 head :: NonEmpty a -> a
@@ -581,7 +649,7 @@
 {-# INLINE unzip #-}
 
 -- | The 'nub' function removes duplicate elements from a list. In
--- particular, it keeps only the first occurence of each element.
+-- particular, it keeps only the first occurrence of each element.
 -- (The name 'nub' means \'essence\'.)
 -- It is a special case of 'nubBy', which allows the programmer to
 -- supply their own inequality test.
@@ -599,8 +667,8 @@
 -- > transpose . transpose /= id
 transpose :: NonEmpty (NonEmpty a) -> NonEmpty (NonEmpty a)
 transpose = fmap fromList
-          . fromList . List.transpose . Foldable.toList
-          . fmap Foldable.toList
+          . fromList . List.transpose . toList
+          . fmap toList
 
 -- | 'sortBy' for 'NonEmpty', behaves the same as 'Data.List.sortBy'
 sortBy :: (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/semigroups-0.18.2/src-ghc7/Data/Semigroup.hs 
new/semigroups-0.18.3/src-ghc7/Data/Semigroup.hs
--- old/semigroups-0.18.2/src-ghc7/Data/Semigroup.hs    2016-06-23 
04:12:10.000000000 +0200
+++ new/semigroups-0.18.3/src-ghc7/Data/Semigroup.hs    2017-04-16 
18:47:49.000000000 +0200
@@ -8,18 +8,21 @@
 #if __GLASGOW_HASKELL__ >= 702
 #define LANGUAGE_DefaultSignatures
 {-# LANGUAGE DefaultSignatures #-}
-#if (defined(MIN_VERSION_hashable)) || __GLASGOW_HASKELL__ >= 708
+#if (defined(MIN_VERSION_hashable)) || __GLASGOW_HASKELL__ == 702 \
+                                    || __GLASGOW_HASKELL__ >= 708
 {-# LANGUAGE Trustworthy #-}
 #else
 {-# LANGUAGE Safe #-}
 #endif
 #endif
 
-#if __GLASGOW_HASKELL__ >= 704
+#if __GLASGOW_HASKELL__ >= 702
 #define LANGUAGE_DeriveGeneric
 {-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE EmptyDataDecls #-}
 {-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 #endif
 
 #if __GLASGOW_HASKELL__ >= 706
@@ -113,6 +116,9 @@
 import Control.Monad.Fix
 import qualified Data.Monoid as Monoid
 import Data.List.NonEmpty
+#if MIN_VERSION_base(4,4,0) && !defined(mingw32_HOST_OS) && 
!defined(ghcjs_HOST_OS)
+import GHC.Event
+#endif
 
 #ifdef MIN_VERSION_deepseq
 import Control.DeepSeq (NFData(..))
@@ -511,6 +517,28 @@
   signum (Min a) = Min (signum a)
   fromInteger    = Min . fromInteger
 
+#if __GLASGOW_HASKELL__ >= 702 && __GLASGOW_HASKELL__ < 706
+instance Generic1 Min where
+  type Rep1 Min = D1 D1Min (C1 C1_0Min (S1 S1_0_0Min Par1))
+  from1 (Min x) = M1 (M1 (M1 (Par1 x)))
+  to1 (M1 (M1 (M1 x))) = Min (unPar1 x)
+
+instance Datatype D1Min where
+  datatypeName _ = "Min"
+  moduleName   _ = "Data.Semigroup"
+
+instance Constructor C1_0Min where
+  conName     _ = "Min"
+  conIsRecord _ = True
+
+instance Selector S1_0_0Min where
+  selName _ = "getMin"
+
+data D1Min
+data C1_0Min
+data S1_0_0Min
+#endif
+
 newtype Max a = Max { getMax :: a } deriving
   ( Eq, Ord, Show, Read
 #ifdef LANGUAGE_DeriveDataTypeable
@@ -596,6 +624,27 @@
   signum (Max a) = Max (signum a)
   fromInteger    = Max . fromInteger
 
+#if __GLASGOW_HASKELL__ >= 702 && __GLASGOW_HASKELL__ < 706
+instance Generic1 Max where
+  type Rep1 Max = D1 D1Max (C1 C1_0Max (S1 S1_0_0Max Par1))
+  from1 (Max x) = M1 (M1 (M1 (Par1 x)))
+  to1 (M1 (M1 (M1 x))) = Max (unPar1 x)
+
+instance Datatype D1Max where
+  datatypeName _ = "Max"
+  moduleName   _ = "Data.Semigroup"
+
+instance Constructor C1_0Max where
+  conName     _ = "Max"
+  conIsRecord _ = True
+
+instance Selector S1_0_0Max where
+  selName _ = "getMax"
+
+data D1Max
+data C1_0Max
+data S1_0_0Max
+#endif
 
 -- | '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.
@@ -655,6 +704,27 @@
   bimap f g (Arg a b) = Arg (f a) (g b)
 #endif
 
+#if __GLASGOW_HASKELL__ >= 702 && __GLASGOW_HASKELL__ < 706
+instance Generic1 (Arg a) where
+  type Rep1 (Arg a)
+    = D1 D1Arg
+        (C1 C1_0Arg
+             (S1 NoSelector (Rec0 a)
+          :*: S1 NoSelector Par1))
+  from1 (Arg a b) = M1 (M1 (M1 (K1 a) :*: M1 (Par1 b)))
+  to1 (M1 (M1 (M1 a :*: M1 b))) = Arg (unK1 a) (unPar1 b)
+
+instance Datatype D1Arg where
+  datatypeName _ = "Arg"
+  moduleName   _ = "Data.Semigroup"
+
+instance Constructor C1_0Arg where
+  conName _ = "Arg"
+
+data D1Arg
+data C1_0Arg
+#endif
+
 -- | Use @'Option' ('First' a)@ to get the behavior of 'Data.Monoid.First' 
from @Data.Monoid@.
 newtype First a = First { getFirst :: a } deriving
   ( Eq, Ord, Show, Read
@@ -725,6 +795,28 @@
   rnf (First a) = rnf a
 #endif
 
+#if __GLASGOW_HASKELL__ >= 702 && __GLASGOW_HASKELL__ < 706
+instance Generic1 First where
+  type Rep1 First = D1 D1First (C1 C1_0First (S1 S1_0_0First Par1))
+  from1 (First x) = M1 (M1 (M1 (Par1 x)))
+  to1 (M1 (M1 (M1 x))) = First (unPar1 x)
+
+instance Datatype D1First where
+  datatypeName _ = "First"
+  moduleName   _ = "Data.Semigroup"
+
+instance Constructor C1_0First where
+  conName     _ = "First"
+  conIsRecord _ = True
+
+instance Selector S1_0_0First where
+  selName _ = "getFirst"
+
+data D1First
+data C1_0First
+data S1_0_0First
+#endif
+
 -- | Use @'Option' ('Last' a)@ to get the behavior of 'Data.Monoid.Last' from 
@Data.Monoid@
 newtype Last a = Last { getLast :: a } deriving
   ( Eq, Ord, Show, Read
@@ -795,6 +887,28 @@
   rnf (Last a) = rnf a
 #endif
 
+#if __GLASGOW_HASKELL__ >= 702 && __GLASGOW_HASKELL__ < 706
+instance Generic1 Last where
+  type Rep1 Last = D1 D1Last (C1 C1_0Last (S1 S1_0_0Last Par1))
+  from1 (Last x) = M1 (M1 (M1 (Par1 x)))
+  to1 (M1 (M1 (M1 x))) = Last (unPar1 x)
+
+instance Datatype D1Last where
+  datatypeName _ = "Last"
+  moduleName   _ = "Data.Semigroup"
+
+instance Constructor C1_0Last where
+  conName     _ = "Last"
+  conIsRecord _ = True
+
+instance Selector S1_0_0Last where
+  selName _ = "getLast"
+
+data D1Last
+data C1_0Last
+data S1_0_0Last
+#endif
+
 -- (==)/XNOR on Bool forms a 'Semigroup', but has no good name
 
 #ifdef MIN_VERSION_binary
@@ -897,6 +1011,28 @@
   rnf (WrapMonoid a) = rnf a
 #endif
 
+#if __GLASGOW_HASKELL__ >= 702 && __GLASGOW_HASKELL__ < 706
+instance Generic1 WrappedMonoid where
+  type Rep1 WrappedMonoid = D1 D1WrappedMonoid (C1 C1_0WrappedMonoid (S1 
S1_0_0WrappedMonoid Par1))
+  from1 (WrapMonoid x) = M1 (M1 (M1 (Par1 x)))
+  to1 (M1 (M1 (M1 x))) = WrapMonoid (unPar1 x)
+
+instance Datatype D1WrappedMonoid where
+  datatypeName _ = "WrappedMonoid"
+  moduleName   _ = "Data.Semigroup"
+
+instance Constructor C1_0WrappedMonoid where
+  conName     _ = "WrapMonoid"
+  conIsRecord _ = True
+
+instance Selector S1_0_0WrappedMonoid where
+  selName _ = "unwrapMonoid"
+
+data D1WrappedMonoid
+data C1_0WrappedMonoid
+data S1_0_0WrappedMonoid
+#endif
+
 -- | Repeat a value @n@ times.
 --
 -- > mtimesDefault n a = a <> a <> ... <> a  -- using <> (n-1) times
@@ -999,6 +1135,28 @@
   mempty = Option Nothing
   mappend = (<>)
 
+#if __GLASGOW_HASKELL__ >= 702 && __GLASGOW_HASKELL__ < 706
+instance Generic1 Option where
+  type Rep1 Option = D1 D1Option (C1 C1_0Option (S1 S1_0_0Option (Rec1 Maybe)))
+  from1 (Option x) = M1 (M1 (M1 (Rec1 x)))
+  to1 (M1 (M1 (M1 x))) = Option (unRec1 x)
+
+instance Datatype D1Option where
+  datatypeName _ = "Option"
+  moduleName   _ = "Data.Semigroup"
+
+instance Constructor C1_0Option where
+  conName     _ = "Option"
+  conIsRecord _ = True
+
+instance Selector S1_0_0Option where
+  selName _ = "getOption"
+
+data D1Option
+data C1_0Option
+data S1_0_0Option
+#endif
+
 -- | This lets you use a difference list of a 'Semigroup' as a 'Monoid'.
 diff :: Semigroup m => m -> Endo m
 diff = Endo . (<>)
@@ -1050,3 +1208,20 @@
 # endif
   stimes n (Tagged a) = Tagged (stimes n a)
 #endif
+
+instance Semigroup a => Semigroup (IO a) where
+    (<>) = liftA2 (<>)
+
+#if !defined(mingw32_HOST_OS) && !defined(ghcjs_HOST_OS)
+# if MIN_VERSION_base(4,4,0)
+instance Semigroup Event where
+    (<>) = mappend
+    stimes = stimesMonoid
+# endif
+
+# if MIN_VERSION_base(4,8,1)
+instance Semigroup Lifetime where
+    (<>) = mappend
+    stimes = stimesMonoid
+# endif
+#endif


Reply via email to