base-orphans 0.6 → 0.7
raw patch · 5 files changed
+145/−38 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Data.Orphans: instance Data.Functor.Classes.Eq1 Data.List.NonEmpty.NonEmpty
- Data.Orphans: instance Data.Functor.Classes.Ord1 Data.List.NonEmpty.NonEmpty
- Data.Orphans: instance Data.Functor.Classes.Read1 Data.List.NonEmpty.NonEmpty
- Data.Orphans: instance Data.Functor.Classes.Show1 Data.List.NonEmpty.NonEmpty
- Data.Orphans: instance Data.Semigroup.Semigroup GHC.Event.Internal.Event
- Data.Orphans: instance Data.Semigroup.Semigroup GHC.Event.Internal.Lifetime
- Data.Orphans: instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (GHC.Types.IO a)
- Data.Orphans: instance forall k (k1 :: k) k2 a (b :: k2). (Data.Typeable.Internal.Typeable k2, Data.Data.Data a, Data.Typeable.Internal.Typeable b) => Data.Data.Data (Data.Functor.Const.Const a b)
+ Data.Orphans: instance Control.Monad.Fail.MonadFail (GHC.ST.ST s)
+ Data.Orphans: instance Data.Data.Data Foreign.Ptr.IntPtr
+ Data.Orphans: instance Data.Data.Data Foreign.Ptr.WordPtr
+ Data.Orphans: instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (Data.Ord.Down a)
+ Data.Orphans: instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (GHC.ST.ST s a)
+ Data.Orphans: instance GHC.Base.Alternative Control.Applicative.ZipList
+ Data.Orphans: instance GHC.Base.Applicative Data.Ord.Down
+ Data.Orphans: instance GHC.Base.Functor Data.Ord.Down
+ Data.Orphans: instance GHC.Base.Monad Data.Ord.Down
+ Data.Orphans: instance GHC.Base.Monoid a => GHC.Base.Monoid (Data.Ord.Down a)
+ Data.Orphans: instance GHC.Base.Monoid a => GHC.Base.Monoid (GHC.ST.ST s a)
+ Data.Orphans: instance GHC.Num.Num a => GHC.Num.Num (Data.Ord.Down a)
Files
- CHANGES.markdown +8/−0
- README.markdown +6/−3
- base-orphans.cabal +30/−25
- src/Data/Orphans.hs +91/−6
- src/Data/Orphans/Prelude.hs +10/−4
CHANGES.markdown view
@@ -1,3 +1,11 @@+## Changes in 0.7 [2018.03.08]+ - Backported new instances from GHC 8.4/`base-4.11`+ * `Alternative` instance for `ZipList`+ * `Data` instance for `IntPtr` and `WordPtr`+ * `Num`, `Functor`, `Applicative`, `Monad`, `Semigroup`, and `Monoid`+ instances for `Data.Ord.Down`+ * `MonadFail`, `Semigroup`, and `Monoid` instances for strict `ST`+ ## Changes in 0.6 [2017.04.10] - Backported new instances from GHC 8.2/`base-4.10` (see https://github.com/haskell-compat/base-orphans/issues/39):
README.markdown view
@@ -33,6 +33,7 @@ * `Alternative`, `MonadPlus`, and `MonadZip` instances for `Proxy` * `Alternative`, `Applicative`, `Bounded`, `Data`, `Enum`, `Foldable`, `Functor`, `Ix`, `Monad`, `MonadFix`, `MonadPlus`, `MonadZip`, and `Traversable` instances for data types in `GHC.Generics`+ * `Alternative`, `Eq`, `Ord`, `Read`, `Show`, `Foldable`, and `Traversable` instances for `ZipList` * `Applicative` and `Alternative` instances for `ReadP` and `ReadPrec` * `Applicative` instance for strict and lazy `ST` * `Applicative`, `Foldable`, `Functor`, `Monad`, and `Traversable` instances for `Complex`,@@ -40,25 +41,25 @@ * `Bits` instance for `Bool` * `Bits`, `Bounded`, and `Integral` instances for `CDev` * `Bits`, `Bounded`, `Enum`, `FiniteBits`, `Floating`, `Fractional`, `Integral`, `IsString`, `Ix`, `Num`, `Real`, `RealFloat`, `RealFrac`, and `Storable` instances for `Const` and `Identity`- * `Data` instances for `All`, `Any`, and `Const`+ * `Data` instances for `All`, `Any`, and `Const`, `IntPtr`, and `WordPtr` * `Data`, `MonadFix` and `MonadZip` instances for `Alt`, `Dual`, `First`, `Last`, `Product`, and `Sum` * `Data` and `IsList` instances for `Version` * `Eq` and `Ord` instances for `Control.Exception.ErrorCall` * `Eq`, `Ord`, `Read`, and `Show` instances for data types in `GHC.Generics`- * `Eq`, `Ord`, `Read`, `Show`, `Foldable`, and `Traversable` instances for `ZipList` * `Eq1`, `Ord1`, `Read1`, and `Show1` instances for `NonEmpty` * `Foldable` instance for `Either`, `(,)` and `Const` * `Functor` instance for `Handler`, `ArgOrder`, `OptDescr`, and `ArgDescr` * `Functor`, `Applicative`, `Alternative`, and `MonadPlus` instances for `ArrowMonad` * `Monad` instance for `(,)` * `Monad` instance for `WrappedMonad`+ * `MonadFail`, `Monoid`, and `Semigroup` instances for strict `ST` * `MonadZip` instance for `Maybe` * `Monoid`, `Eq`, `Ord`, `Read`, and `Show` instances for `Const` * `Monoid` instances for `Identity` and `IO` * `Num` instance for `Sum` and `Product` * `Read` instance for `Fixed`- * `Read` and `Show` instances for `Down`+ * `Applicative`, `Functor`, `Monad`, `Monoid`, `Num`, `Read`, `Semigroup`, and `Show` instances for `Down` * `Semigroup` instances for `IO`, `Event` and `Lifetime` * `Show` instance for `Fingerprint` * `Storable` instance for `()`, `Complex`, and `Ratio`@@ -78,6 +79,8 @@ ## Supported versions of GHC/`base` + * `ghc-8.4.1` / `base-4.11.0.0`+ * `ghc-8.2.2` / `base-4.10.1.0` * `ghc-8.2.1` / `base-4.10.0.0` * `ghc-8.0.2` / `base-4.9.1.0` * `ghc-8.0.1` / `base-4.9.0.0`
base-orphans.cabal view
@@ -1,9 +1,11 @@--- This file has been generated from package.yaml by hpack version 0.17.0.+-- This file has been generated from package.yaml by hpack version 0.27.0. -- -- see: https://github.com/sol/hpack+--+-- hash: 41c092a82fb1cbacf3f1eb99d4bdfbdae043e7a56b2a03706c9ea6ece36fda6f name: base-orphans-version: 0.6+version: 0.7 synopsis: Backwards-compatible orphan instances for base description: @base-orphans@ defines orphan instances that mimic instances available in later versions of @base@ to a wider (older) range of compilers. @base-orphans@ does not export anything except the orphan instances themselves and complements @<http://hackage.haskell.org/package/base-compat base-compat>@. See the README for what instances are covered: <https://github.com/haskell-compat/base-orphans#readme>. See also the <https://github.com/haskell-compat/base-orphans#what-is-not-covered what is not covered> section.@@ -23,10 +25,11 @@ license-file: LICENSE build-type: Simple cabal-version: >= 1.10+tested-with: GHC == 7.0.1, GHC == 7.0.2, GHC == 7.0.3, GHC == 7.0.4 , GHC == 7.2.1, GHC == 7.2.2 , GHC == 7.4.1, GHC == 7.4.2 , GHC == 7.6.1, GHC == 7.6.2, GHC == 7.6.3 , GHC == 7.8.1, GHC == 7.8.2, GHC == 7.8.3, GHC == 7.8.4 , GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3 , GHC == 8.0.1, GHC == 8.0.2 , GHC == 8.2.1, GHC == 8.2.2 , GHC == 8.4.1 extra-source-files:- CHANGES.markdown- README.markdown+ CHANGES.markdown+ README.markdown source-repository head type: git@@ -34,38 +37,40 @@ library hs-source-dirs:- src+ src ghc-options: -Wall build-depends:- base >= 4.3 && < 5,- ghc-prim+ base >=4.3 && <5+ , ghc-prim exposed-modules:- Data.Orphans+ Data.Orphans other-modules:- Data.Orphans.Prelude+ Data.Orphans.Prelude default-language: Haskell2010 test-suite spec type: exitcode-stdio-1.0 main-is: Spec.hs hs-source-dirs:- test+ test ghc-options: -Wall build-depends:- base >= 4.3 && < 5,- base-orphans,- hspec == 2.*,- QuickCheck+ QuickCheck+ , base >=4.3 && <5+ , base-orphans+ , hspec ==2.*+ build-tool-depends: hspec-discover:hspec-discover == 2.* other-modules:- Control.Applicative.OrphansSpec- Control.Exception.OrphansSpec- Data.Bits.OrphansSpec- Data.Foldable.OrphansSpec- Data.Monoid.OrphansSpec- Data.Traversable.OrphansSpec- Data.Version.OrphansSpec- Foreign.Storable.OrphansSpec- GHC.Fingerprint.OrphansSpec- System.Posix.Types.IntWord- System.Posix.Types.OrphansSpec+ Control.Applicative.OrphansSpec+ Control.Exception.OrphansSpec+ Data.Bits.OrphansSpec+ Data.Foldable.OrphansSpec+ Data.Monoid.OrphansSpec+ Data.Traversable.OrphansSpec+ Data.Version.OrphansSpec+ Foreign.Storable.OrphansSpec+ GHC.Fingerprint.OrphansSpec+ System.Posix.Types.IntWord+ System.Posix.Types.OrphansSpec+ Paths_base_orphans default-language: Haskell2010
src/Data/Orphans.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE BangPatterns #-} {-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveFoldable #-}@@ -36,10 +37,6 @@ -} module Data.Orphans () where -#if !(MIN_VERSION_base(4,4,0))-import Control.Monad.ST as Strict-#endif- #if __GLASGOW_HASKELL__ >= 701 && !(MIN_VERSION_base(4,9,0)) import GHC.Generics as Generics #endif@@ -49,7 +46,6 @@ #endif #if !(MIN_VERSION_base(4,9,0))-import Data.Data as Data import qualified Data.Foldable as F (Foldable(..)) import Data.Monoid as Monoid import qualified Data.Traversable as T (Traversable(..))@@ -57,6 +53,18 @@ import Text.Read as Read #endif +#if MIN_VERSION_base(4,9,0) && !(MIN_VERSION_base(4,11,0))+import qualified Control.Monad.Fail as Fail (MonadFail(..))+#endif++#if !(MIN_VERSION_base(4,10,0))+import Data.Data as Data+#endif++#if !(MIN_VERSION_base(4,11,0))+import Control.Monad.ST as Strict+#endif+ #if __GLASGOW_HASKELL__ < 710 import Control.Exception as Exception import Control.Monad.ST.Lazy as Lazy@@ -69,7 +77,7 @@ # endif #endif -#if !(MIN_VERSION_base(4,10,0))+#if !(MIN_VERSION_base(4,11,0)) import Data.Orphans.Prelude #endif @@ -935,6 +943,83 @@ (<>) = mappend stimes = stimesMonoid # endif+# endif+#endif++#if !(MIN_VERSION_base(4,11,0))+instance Alternative ZipList where+ empty = ZipList []+ ZipList xs <|> ZipList ys = ZipList (xs ++ drop (length xs) ys)++deriving instance Monoid a => Monoid (Down a)+deriving instance Num a => Num (Down a)++instance Functor Down where+ fmap = coerce++instance Applicative Down where+ pure = Down+ (<*>) = coerce++instance Monad Down where+ return = Down+ Down a >>= k = k a++instance Monoid a => Monoid (Strict.ST s a) where+ mempty = pure mempty+ mappend = liftA2 mappend++# if MIN_VERSION_base(4,9,0)+instance Fail.MonadFail (Strict.ST s) where+ fail s = errorWithoutStackTrace s++deriving instance Semigroup a => Semigroup (Down a)++instance Semigroup a => Semigroup (Strict.ST s a) where+ (<>) = liftA2 (<>)+# endif++# if MIN_VERSION_base(4,10,0)+deriving instance Data IntPtr+deriving instance Data WordPtr+# else+-- The constructors for IntPtr and WordPtr aren't exposed on older versions+-- of base, so we're forced to hand-roll the Data instances here+instance Data IntPtr where+ gfoldl k z iptr = z intPtr `k` unIntPtr iptr+ gunfold k z _ = k (z intPtr)+ toConstr !_ = cIntPtr+ dataTypeOf _ = tIntPtr++intPtr :: Int -> IntPtr+intPtr = unsafeCoerce++unIntPtr :: IntPtr -> Int+unIntPtr = unsafeCoerce++tIntPtr :: DataType+tIntPtr = mkDataType "IntPtr" [cIntPtr]++cIntPtr :: Constr+cIntPtr = mkConstr tIntPtr "IntPtr" [] Data.Prefix++instance Data WordPtr where+ gfoldl k z wptr = z wordPtr `k` unWordPtr wptr+ gunfold k z _ = k (z wordPtr)+ toConstr !_ = cWordPtr+ dataTypeOf _ = tWordPtr++wordPtr :: Word -> WordPtr+wordPtr = unsafeCoerce++unWordPtr :: WordPtr -> Word+unWordPtr = unsafeCoerce++tWordPtr :: DataType+tWordPtr = mkDataType "WordPtr" [cWordPtr]++cWordPtr :: Constr+cWordPtr = mkConstr tWordPtr "WordPtr" [] Data.Prefix # endif #endif
src/Data/Orphans/Prelude.hs view
@@ -15,7 +15,7 @@ Note that this module does not export any modules that could introduce name clashes. -} module Data.Orphans.Prelude-#if MIN_VERSION_base(4,10,0)+#if MIN_VERSION_base(4,11,0) () where #else (module OrphansPrelude, realPart, imagPart) where@@ -30,7 +30,7 @@ import Data.Bits as OrphansPrelude import Data.Char as OrphansPrelude import Data.Complex as OrphansPrelude (Complex(..))-import Data.Data as OrphansPrelude (Data)+import Data.Data as OrphansPrelude (Data(..), Constr, DataType, mkConstr, mkDataType) import Data.Fixed as OrphansPrelude import Data.Int as OrphansPrelude import Data.Ix as OrphansPrelude@@ -42,7 +42,7 @@ import Foreign.C.Error as OrphansPrelude import Foreign.C.Types as OrphansPrelude import Foreign.Marshal.Pool as OrphansPrelude-import Foreign.Ptr as OrphansPrelude (castPtr)+import Foreign.Ptr as OrphansPrelude import Foreign.Storable as OrphansPrelude import GHC.Base as OrphansPrelude@@ -75,14 +75,17 @@ # if MIN_VERSION_base(4,4,0) import Control.Monad.Zip as OrphansPrelude-import Data.Typeable.Internal as OrphansPrelude import GHC.Fingerprint as OrphansPrelude import GHC.IO.Encoding.Failure as OrphansPrelude # if !defined(mingw32_HOST_OS) && !defined(__GHCJS__) import GHC.Event as OrphansPrelude # endif++# if !(MIN_VERSION_base(4,10,0))+import Data.Typeable.Internal as OrphansPrelude # endif+# endif # if MIN_VERSION_base(4,5,0) import GHC.Stack as OrphansPrelude@@ -90,8 +93,11 @@ # endif # if MIN_VERSION_base(4,6,0)+import Data.Ord as OrphansPrelude (Down(..)) import GHC.GHCi as OrphansPrelude import GHC.TypeLits as OrphansPrelude hiding (type (*))+# else+import GHC.Exts as OrphansPrelude (Down(..)) # endif # if MIN_VERSION_base(4,6,0) && !(MIN_VERSION_base(4,8,2))