packages feed

foldable1-classes-compat 0.1 → 0.1.1

raw patch · 5 files changed

+28/−104 lines, 5 filesdep +tasty-benchdep −criteriondep −generic-derivingdep −semigroupsdep ~QuickCheckdep ~basedep ~containers

Dependencies added: tasty-bench

Dependencies removed: criterion, generic-deriving, semigroups, transformers-compat

Dependency ranges changed: QuickCheck, base, containers, ghc-prim

Files

CHANGELOG.markdown view
@@ -1,5 +1,9 @@ # Revision history for foldable1-classes-compat +## 0.1.1 -- 2024-12-05++* Drop support for pre-8.0 versions of GHC.+ ## 0.1 -- 2023-02-24  * Backport the `Foldable1` and `Bifoldable1` type classes that were introduced
bench/Bench.hs view
@@ -13,11 +13,11 @@ import Prelude hiding (foldl1, head, last, maximum)  import Control.DeepSeq    (NFData (..))-import Criterion.Main import qualified Data.Foldable as F (Foldable) import Data.Foldable1 import Data.List.NonEmpty (NonEmpty (..)) import Data.Semigroup     (Min (..))+import Test.Tasty.Bench  #if HAS_FOLDABLE1_CONTAINERS import Data.Tree          (Tree (..))
foldable1-classes-compat.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.10 name:          foldable1-classes-compat-version:       0.1+version:       0.1.1 synopsis:   Compatibility package for the Foldable1 and Bifoldable1 type classes @@ -25,22 +25,19 @@   CHANGELOG.markdown   README.markdown tested-with:-  GHC ==7.0.4-   || ==7.2.2-   || ==7.4.2-   || ==7.6.3-   || ==7.8.4-   || ==7.10.3-   || ==8.0.2+  GHC ==8.0.2    || ==8.2.2    || ==8.4.4    || ==8.6.5    || ==8.8.4    || ==8.10.7    || ==9.0.2-   || ==9.2.5-   || ==9.4.4-   || ==9.6.1+   || ==9.2.8+   || ==9.4.8+   || ==9.6.6+   || ==9.8.4+   || ==9.10.1+   || ==9.12.1  -- , GHCJS ==8.4 @@ -60,39 +57,28 @@ library   default-language: Haskell2010   ghc-options:      -Wall-  build-depends:    base >=4.3 && <4.19+  build-depends:    base >=4.9 && <4.22    if !impl(ghc >= 9.6)     hs-source-dirs: src     build-depends:-        containers    >=0.4 && <0.7+        containers    >=0.4 && <0.8       , transformers  >=0.3 && <0.7     exposed-modules:       Data.Foldable1       Data.Bifoldable1    if !impl(ghc >=8.6)-    build-depends: base-orphans >=0.8.1 && <0.9+    build-depends: base-orphans >=0.8.1 && <0.10    if !impl(ghc >=8.2)     build-depends: bifunctor-classes-compat >=0.1 && <0.2 -  if !impl(ghc >=8.0)-    build-depends:-        semigroups           >=0.18.5 && <0.20-      , transformers-compat  >=0.6    && <0.8--  if !impl(ghc >= 7.2)-    build-depends: generic-deriving >=1.14 && <1.15-   if flag(tagged)     build-depends: tagged >=0.4.4 && <1    if impl(ghc >= 9.0)-    build-depends: ghc-prim >= 0.7 && <0.11-  else-    if !impl(ghc >=7.6)-      build-depends: ghc-prim+    build-depends: ghc-prim >= 0.7 && <0.14  test-suite test   default-language: Haskell2010@@ -101,23 +87,12 @@   hs-source-dirs:   test   main-is:          Tests.hs -  -- because of quickcheck-instances-  if !impl(ghc >=7.4)-    buildable: False-   build-depends:       base     , containers     , foldable1-classes-compat     , transformers--  if !impl(ghc >=8.0)-    build-depends:-        semigroups-      , transformers-compat--  build-depends:-      QuickCheck                  >=2.13.2  && <2.15+    , QuickCheck                  >=2.13.2  && <2.16     , quickcheck-instances        >=0.3.27  && <0.4     , test-framework              >=0.8.2.0 && <0.9     , test-framework-quickcheck2  >=0.3.0.5 && <0.4@@ -129,20 +104,10 @@   hs-source-dirs:   bench   main-is:          Bench.hs -  if !impl(ghc >=7.6)-    buildable: False-   build-depends:       base     , containers     , foldable1-classes-compat     , transformers--  if !impl(ghc >=8.0)-    build-depends:-        semigroups-      , transformers-compat--  build-depends:-      criterion  >=1.5.6.1 && <1.7-    , deepseq    >=1.3     && <1.5+    , tasty-bench >=0.3.5 && < 0.4+    , deepseq     >=1.3   && <1.6
src/Data/Bifoldable1.hs view
@@ -1,12 +1,7 @@ {-# LANGUAGE CPP               #-} {-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE TypeOperators     #-}--#if __GLASGOW_HASKELL__ >= 708 {-# LANGUAGE Safe              #-}-#elif __GLASGOW_HASKELL__ >= 702-{-# LANGUAGE Trustworthy       #-}-#endif+{-# LANGUAGE TypeOperators     #-} module Data.Bifoldable1 where  import Control.Applicative (Const (..))
src/Data/Foldable1.hs view
@@ -3,17 +3,11 @@ {-# LANGUAGE FlexibleInstances          #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE NoImplicitPrelude          #-}+{-# LANGUAGE PolyKinds                  #-} {-# LANGUAGE ScopedTypeVariables        #-} {-# LANGUAGE StandaloneDeriving         #-}-{-# LANGUAGE TypeOperators              #-}--#if __GLASGOW_HASKELL__ >=706-{-# LANGUAGE PolyKinds #-}-#endif--#if __GLASGOW_HASKELL__ >=702 {-# LANGUAGE Trustworthy                #-}-#endif+{-# LANGUAGE TypeOperators              #-}  -- | A class of non-empty data structures that can be folded to a summary value. module Data.Foldable1 (@@ -29,34 +23,23 @@     minimumBy,     ) where +import Data.Coerce        (Coercible, coerce)+import Data.Complex       (Complex (..)) import Data.Foldable      (Foldable, foldlM, foldr) import Data.List          (foldl, foldl') import Data.List.NonEmpty (NonEmpty (..))+import Data.Ord           (Down (..)) import Data.Semigroup        (Dual (..), First (..), Last (..), Max (..), Min (..), Product (..),        Semigroup (..), Sum (..))+import GHC.Generics+       (M1 (..), Par1 (..), Rec1 (..), V1, (:*:) (..), (:+:) (..), (:.:) (..)) import Prelude        (Maybe (..), Monad (..), Ord, Ordering (..), id, seq, ($!), ($), (.),        (=<<), flip, const, error)  import qualified Data.List.NonEmpty as NE--#if MIN_VERSION_base(4,4,0)-import Data.Complex (Complex (..))-import GHC.Generics-       (M1 (..), Par1 (..), Rec1 (..), V1, (:*:) (..), (:+:) (..), (:.:) (..))-#else-import Generics.Deriving-       (M1 (..), Par1 (..), Rec1 (..), V1, (:*:) (..), (:+:) (..), (:.:) (..))-#endif--#if MIN_VERSION_base(4,6,0)-import Data.Ord (Down (..))-#endif--#if MIN_VERSION_base(4,8,0) import qualified Data.Monoid as Mon-#endif  #if !MIN_VERSION_base(4,12,0) import Data.Orphans ()@@ -84,13 +67,6 @@ import qualified Data.Functor.Product as Functor import qualified Data.Functor.Sum     as Functor --- coerce-#if __GLASGOW_HASKELL__ <708-import Unsafe.Coerce (unsafeCoerce)-#else-import Data.Coerce (Coercible, coerce)-#endif- -- $setup -- >>> import Prelude hiding (foldr1, foldl1, head, last, minimum, maximum) @@ -100,9 +76,7 @@  -- | Non-empty data structures that can be folded. class Foldable t => Foldable1 t where-#if __GLASGOW_HASKELL__ >= 708     {-# MINIMAL foldMap1 | foldrMap1 #-}-#endif      -- At some point during design it was possible to define this class using     -- only 'toNonEmpty'. But it seems a bad idea in general.@@ -415,17 +389,13 @@     head = NE.head     last = NE.last -#if MIN_VERSION_base(4,6,0) instance Foldable1 Down where     foldMap1 = coerce-#endif -#if MIN_VERSION_base(4,4,0) instance Foldable1 Complex where     foldMap1 f (x :+ y) = f x <> f y      toNonEmpty (x :+ y) = x :| y : []-#endif  ------------------------------------------------------------------------------- -- Instances for tuples@@ -466,9 +436,7 @@ instance Foldable1 Last where     foldMap1 = coerce -#if MIN_VERSION_base(4,8,0) deriving instance (Foldable1 f) => Foldable1 (Mon.Alt f)-#endif  #if MIN_VERSION_base(4,12,0) deriving instance (Foldable1 f) => Foldable1 (Mon.Ap f)@@ -641,13 +609,5 @@ -- coerce shim ------------------------------------------------------------------------------- -#if __GLASGOW_HASKELL__ <708-coerce :: a -> b-coerce = unsafeCoerce--(#.) :: (b -> c) -> (a -> b) -> a -> c-(#.) _f = coerce-#else (#.) :: Coercible b c => (b -> c) -> (a -> b) -> a -> c (#.) _f = coerce-#endif