papa-0.4.0: src/Papa/Semigroupoids/Data/Semigroup/Foldable.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -Wall #-}
module Papa.Semigroupoids.Data.Semigroup.Foldable (
maximum,
minimum,
) where
import Control.Category ((.))
import Data.Ord (Ord)
import Data.Semigroup (Max (Max, getMax), Min (Min, getMin))
import Data.Semigroup.Foldable
{-# INLINE maximum #-}
-- | Find the maximum element in a non-empty structure.
--
-- >>> import Data.List.NonEmpty (NonEmpty(..))
-- >>> maximum (1 :| [2,3,4])
-- 4
-- >>> maximum (10 :| [5,20,3])
-- 20
maximum ::
(Ord a, Foldable1 f) =>
f a ->
a
maximum =
getMax . foldMap1 Max
{-# INLINE minimum #-}
-- | Find the minimum element in a non-empty structure.
--
-- >>> import Data.List.NonEmpty (NonEmpty(..))
-- >>> minimum (1 :| [2,3,4])
-- 1
-- >>> minimum (10 :| [5,20,3])
-- 3
minimum ::
(Ord a, Foldable1 f) =>
f a ->
a
minimum =
getMin . foldMap1 Min