Proper base bounds (for real), backport Monoid Identity instance
authorryan.gl.scott <ryan.gl.scott@gmail.com>
Wed, 28 Oct 2015 03:40:19 +0000 (03:40 +0000)
committerryan.gl.scott <ryan.gl.scott@gmail.com>
Wed, 28 Oct 2015 03:40:19 +0000 (03:40 +0000)
It has finally been decided that GHC 8.0 will ship with base-4.9.0.0, so we
should follow that convention. Also, let's backport the Monoid (Identity a)
instance that was introduced in GHC 8.0.

Control/Monad/Trans/Error.hs
legacy/pre709/Data/Functor/Identity.hs
transformers.cabal

index 5243dd9..1ecf27f 100644 (file)
@@ -5,7 +5,7 @@
 #if __GLASGOW_HASKELL__ >= 710
 {-# LANGUAGE AutoDeriveTypeable #-}
 #endif
-#if !(MIN_VERSION_base(4,8,2))
+#if !(MIN_VERSION_base(4,9,0))
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 #endif
 -----------------------------------------------------------------------------
@@ -72,8 +72,8 @@ import Data.Monoid (mempty)
 import Data.Traversable (Traversable(traverse))
 import System.IO.Error
 
-#if !(MIN_VERSION_base(4,8,2))
--- These instances are in base-4.8.2
+#if !(MIN_VERSION_base(4,9,0))
+-- These instances are in base-4.9.0
 
 instance MonadPlus IO where
     mzero       = ioError (userError "mzero")
index 098ae1c..87ca6d7 100644 (file)
@@ -45,6 +45,7 @@ import Control.Monad.Fix
 import Control.Monad.Zip (MonadZip(mzipWith, munzip))
 #endif
 import Data.Foldable (Foldable(foldMap))
+import Data.Monoid (Monoid(mempty, mappend))
 import Data.Traversable (Traversable(traverse))
 #if __GLASGOW_HASKELL__ >= 612
 import Data.Data
@@ -67,6 +68,10 @@ newtype Identity a = Identity { runIdentity :: a }
 #endif
              )
 
+instance (Monoid a) => Monoid (Identity a) where
+    mempty = Identity mempty
+    mappend (Identity x) (Identity y) = Identity (mappend x y)
+
 -- These instances would be equivalent to the derived instances of the
 -- newtype if the field were removed.
 
index 5f4473f..3a9dc70 100644 (file)
@@ -48,7 +48,7 @@ library
     hs-source-dirs: legacy/pre709
     exposed-modules: Data.Functor.Identity
   if !impl(ghc>=7.11)
-    -- Control.Monad.IO.Class was moved into base in GHC 7.12
+    -- Control.Monad.IO.Class was moved into base-4.9.0 (GHC 7.12)
     -- see also https://ghc.haskell.org/trac/ghc/ticket/10773
     hs-source-dirs: legacy/pre711
     exposed-modules: Control.Monad.IO.Class