summaryrefslogtreecommitdiff
path: root/libraries
diff options
context:
space:
mode:
authorBodigrim <andrew.lelechenko@gmail.com>2023-03-21 00:42:26 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-03-23 09:19:32 -0400
commit80fce576d001a6a1182d426020349e496b179496 (patch)
tree5fdc31b52ccadc4a81cee3e3e73b6d179243eeab /libraries
parentbc0661081aa9c61cc031546cf2b7d58f46a4f5be (diff)
downloadhaskell-80fce576d001a6a1182d426020349e496b179496.tar.gz
Simplify minimum/maximum in instance Foldable (Compose f g)
Diffstat (limited to 'libraries')
-rw-r--r--libraries/base/Data/Functor/Compose.hs8
1 files changed, 2 insertions, 6 deletions
diff --git a/libraries/base/Data/Functor/Compose.hs b/libraries/base/Data/Functor/Compose.hs
index ca659cd1b7..d705e8ee70 100644
--- a/libraries/base/Data/Functor/Compose.hs
+++ b/libraries/base/Data/Functor/Compose.hs
@@ -27,13 +27,11 @@ module Data.Functor.Compose (
) where
import Data.Functor.Classes
-import Data.Functor.Utils (Max(..), Min(..))
import Control.Applicative
import Data.Coerce (coerce)
import Data.Data (Data)
import Data.Foldable (Foldable(..))
-import Data.Maybe (fromMaybe)
import Data.Monoid (Sum(..), All(..), Any(..), Product(..))
import Data.Type.Equality (TestEquality(..), (:~:)(..))
import GHC.Generics (Generic, Generic1)
@@ -127,10 +125,8 @@ instance (Foldable f, Foldable g) => Foldable (Compose f g) where
length (Compose t) = getSum (foldMap' (Sum . length) t)
elem x (Compose t) = getAny (foldMap (Any . elem x) t)
- minimum (Compose fga) =
- fromMaybe (error "minimum: empty structure") $ getMin $ foldMap' (\ga -> if null ga then Min Nothing else Min $ Just $ minimum ga) fga
- maximum (Compose fga) =
- fromMaybe (error "maximum: empty structure") $ getMax $ foldMap' (\ga -> if null ga then Max Nothing else Max $ Just $ maximum ga) fga
+ minimum (Compose fga) = minimum $ map minimum $ filter (not . null) $ toList fga
+ maximum (Compose fga) = maximum $ map maximum $ filter (not . null) $ toList fga
sum (Compose t) = getSum (foldMap' (Sum . sum) t)
product (Compose t) = getProduct (foldMap' (Product . product) t)