{-# LANGUAGE CPP #-}{-# LANGUAGE DeriveDataTypeable #-}{-# LANGUAGE DeriveGeneric #-}{-# LANGUAGE FlexibleContexts #-}{-# LANGUAGE PolyKinds #-}{-# LANGUAGE ScopedTypeVariables #-}{-# LANGUAGE Trustworthy #-}------------------------------------------------------------------------------- |-- Module : Data.Semigroup-- Copyright : (C) 2011-2015 Edward Kmett-- License : BSD-style (see the file LICENSE)---- Maintainer : libraries@haskell.org-- Stability : provisional-- Portability : portable---- A type @a@ is a 'Semigroup' if it provides an associative function ('<>')-- that lets you combine any two values of type @a@ into one. Where being-- associative means that the following must always hold:---- prop> (a <> b) <> c == a <> (b <> c)---- ==== __Examples__---- The 'Min' 'Semigroup' instance for 'Int' is defined to always pick the smaller-- number:---- >>> Min 1 <> Min 2 <> Min 3 <> Min 4 :: Min Int-- Min {getMin = 1}---- If we need to combine multiple values we can use the 'sconcat' function-- to do so. We need to ensure however that we have at least one value to-- operate on, since otherwise our result would be undefined. It is for this-- reason that 'sconcat' uses "Data.List.NonEmpty.NonEmpty" - a list that-- can never be empty:---- >>> (1 :| [])-- 1 :| [] -- equivalent to [1] but guaranteed to be non-empty.---- >>> (1 :| [2, 3, 4])-- 1 :| [2,3,4] -- equivalent to [1,2,3,4] but guaranteed to be non-empty.---- Equipped with this guaranteed to be non-empty data structure, we can combine-- values using 'sconcat' and a 'Semigroup' of our choosing. We can try the 'Min'-- and 'Max' instances of 'Int' which pick the smallest, or largest number-- respectively:---- >>> sconcat (1 :| [2, 3, 4]) :: Min Int-- Min {getMin = 1}---- >>> sconcat (1 :| [2, 3, 4]) :: Max Int-- Max {getMax = 4}---- String concatenation is another example of a 'Semigroup' instance:---- >>> "foo" <> "bar"-- "foobar"---- A 'Semigroup' is a generalization of a 'Monoid'. Yet unlike the 'Semigroup', the 'Monoid'-- requires the presence of a neutral element ('mempty') in addition to the associative-- operator. The requirement for a neutral element prevents many types from being a full Monoid,-- like "Data.List.NonEmpty.NonEmpty".---- Note that the use of @(\<\>)@ in this module conflicts with an operator with the same-- name that is being exported by "Data.Monoid". However, this package-- re-exports (most of) the contents of Data.Monoid, so to use semigroups-- and monoids in the same package just---- > import Data.Semigroup---- @since 4.9.0.0----------------------------------------------------------------------------moduleData.Semigroup(Semigroup (..),stimesMonoid ,stimesIdempotent ,stimesIdempotentMonoid ,mtimesDefault -- * Semigroups,Min (..),Max (..),First (..),Last (..),WrappedMonoid (..)-- * Re-exported monoids from Data.Monoid,Dual (..),Endo (..),All (..),Any (..),Sum (..),Product (..)-- * Difference lists of a semigroup,diff ,cycle1 -- * ArgMin, ArgMax,Arg (..),ArgMin ,ArgMax )whereimportPrelude hiding(foldr1 ,Applicative (..))importGHC.Base (Semigroup (..))importData.Semigroup.Internal importControl.Applicative importControl.Monad.Fix importData.Bifoldable importData.Bifunctor importData.Bitraversable importData.Coerce importData.Data importGHC.Generics importqualifiedGHC.List asList-- $setup-- >>> import Prelude-- >>> import Data.List.NonEmpty (NonEmpty (..))-- | A generalization of 'Data.List.cycle' to an arbitrary 'Semigroup'.-- May fail to terminate for some values in some semigroups.---- ==== __Examples__---- >>> take 10 $ cycle1 [1, 2, 3]-- [1,2,3,1,2,3,1,2,3,1]---- >>> cycle1 (Right 1)-- Right 1---- >>> cycle1 (Left 1)-- * hangs forever *cycle1 ::Semigroup m =>m ->m cycle1 :: forall m. Semigroup m => m -> m cycle1 m xs =m xs' wherexs' :: m xs' =m xs m -> m -> m forall a. Semigroup a => a -> a -> a <> m xs' -- | This lets you use a difference list of a 'Semigroup' as a 'Monoid'.---- ==== __Examples__---- > let hello = diff "Hello, "---- >>> appEndo hello "World!"-- "Hello, World!"---- >>> appEndo (hello <> mempty) "World!"-- "Hello, World!"---- >>> appEndo (mempty <> hello) "World!"-- "Hello, World!"---- > let world = diff "World"-- > let excl = diff "!"---- >>> appEndo (hello <> (world <> excl)) mempty-- "Hello, World!"---- >>> appEndo ((hello <> world) <> excl) mempty-- "Hello, World!"diff ::Semigroup m =>m ->Endo m diff :: forall m. Semigroup m => m -> Endo m diff =(m -> m) -> Endo m forall a. (a -> a) -> Endo a Endo ((m -> m) -> Endo m) -> (m -> m -> m) -> m -> Endo m forall b c a. (b -> c) -> (a -> b) -> a -> c . m -> m -> m forall a. Semigroup a => a -> a -> a (<>) -- | The 'Min' 'Monoid' and 'Semigroup' always choose the smaller element as-- by the 'Ord' instance and 'min' of the contained type.---- ==== __Examples__---- >>> Min 42 <> Min 3-- Min 3---- >>> sconcat $ Min 1 :| [ Min n | n <- [2 .. 100]]-- Min {getMin = 1}newtypeMin a =Min {forall a. Min a -> a getMin ::a }deriving(Min a Min a -> Min a -> Bounded (Min a) forall a. a -> a -> Bounded a forall a. Bounded a => Min a $cminBound :: forall a. Bounded a => Min a minBound :: Min a $cmaxBound :: forall a. Bounded a => Min a maxBound :: Min a Bounded -- ^ @since 4.9.0.0,Min a -> Min a -> Bool (Min a -> Min a -> Bool) -> (Min a -> Min a -> Bool) -> Eq (Min a) forall a. Eq a => Min a -> Min a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall a. Eq a => Min a -> Min a -> Bool == :: Min a -> Min a -> Bool $c/= :: forall a. Eq a => Min a -> Min a -> Bool /= :: Min a -> Min a -> Bool Eq -- ^ @since 4.9.0.0,Eq (Min a) Eq (Min a) => (Min a -> Min a -> Ordering) -> (Min a -> Min a -> Bool) -> (Min a -> Min a -> Bool) -> (Min a -> Min a -> Bool) -> (Min a -> Min a -> Bool) -> (Min a -> Min a -> Min a) -> (Min a -> Min a -> Min a) -> Ord (Min a) Min a -> Min a -> Bool Min a -> Min a -> Ordering Min a -> Min a -> Min a forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall a. Ord a => Eq (Min a) forall a. Ord a => Min a -> Min a -> Bool forall a. Ord a => Min a -> Min a -> Ordering forall a. Ord a => Min a -> Min a -> Min a $ccompare :: forall a. Ord a => Min a -> Min a -> Ordering compare :: Min a -> Min a -> Ordering $c< :: forall a. Ord a => Min a -> Min a -> Bool < :: Min a -> Min a -> Bool $c<= :: forall a. Ord a => Min a -> Min a -> Bool <= :: Min a -> Min a -> Bool $c> :: forall a. Ord a => Min a -> Min a -> Bool > :: Min a -> Min a -> Bool $c>= :: forall a. Ord a => Min a -> Min a -> Bool >= :: Min a -> Min a -> Bool $cmax :: forall a. Ord a => Min a -> Min a -> Min a max :: Min a -> Min a -> Min a $cmin :: forall a. Ord a => Min a -> Min a -> Min a min :: Min a -> Min a -> Min a Ord -- ^ @since 4.9.0.0,Int -> Min a -> ShowS [Min a] -> ShowS Min a -> String (Int -> Min a -> ShowS) -> (Min a -> String) -> ([Min a] -> ShowS) -> Show (Min a) forall a. Show a => Int -> Min a -> ShowS forall a. Show a => [Min a] -> ShowS forall a. Show a => Min a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall a. Show a => Int -> Min a -> ShowS showsPrec :: Int -> Min a -> ShowS $cshow :: forall a. Show a => Min a -> String show :: Min a -> String $cshowList :: forall a. Show a => [Min a] -> ShowS showList :: [Min a] -> ShowS Show -- ^ @since 4.9.0.0,ReadPrec [Min a] ReadPrec (Min a) Int -> ReadS (Min a) ReadS [Min a] (Int -> ReadS (Min a)) -> ReadS [Min a] -> ReadPrec (Min a) -> ReadPrec [Min a] -> Read (Min a) forall a. Read a => ReadPrec [Min a] forall a. Read a => ReadPrec (Min a) forall a. Read a => Int -> ReadS (Min a) forall a. Read a => ReadS [Min a] forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: forall a. Read a => Int -> ReadS (Min a) readsPrec :: Int -> ReadS (Min a) $creadList :: forall a. Read a => ReadS [Min a] readList :: ReadS [Min a] $creadPrec :: forall a. Read a => ReadPrec (Min a) readPrec :: ReadPrec (Min a) $creadListPrec :: forall a. Read a => ReadPrec [Min a] readListPrec :: ReadPrec [Min a] Read -- ^ @since 4.9.0.0,Typeable (Min a) Typeable (Min a) => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Min a -> c (Min a)) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Min a)) -> (Min a -> Constr) -> (Min a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Min a))) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Min a))) -> ((forall b. Data b => b -> b) -> Min a -> Min a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r) -> (forall u. (forall d. Data d => d -> u) -> Min a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> Min a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Min a -> m (Min a)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a)) -> Data (Min a) Min a -> Constr Min a -> DataType (forall b. Data b => b -> b) -> Min a -> Min a forall a. Data a => Typeable (Min a) forall a. Data a => Min a -> Constr forall a. Data a => Min a -> DataType forall a. Data a => (forall b. Data b => b -> b) -> Min a -> Min a forall a u. Data a => Int -> (forall d. Data d => d -> u) -> Min a -> u forall a u. Data a => (forall d. Data d => d -> u) -> Min a -> [u] forall a r r'. Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r forall a r r'. Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r forall a (m :: * -> *). (Data a, Monad m) => (forall d. Data d => d -> m d) -> Min a -> m (Min a) forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> Min a -> m (Min a) forall a (c :: * -> *). Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Min a) forall a (c :: * -> *). Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Min a -> c (Min a) forall a (t :: * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (Min a)) forall a (t :: * -> * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Min a)) forall a. Typeable a => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> Min a -> u forall u. (forall d. Data d => d -> u) -> Min a -> [u] forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Min a) forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Min a -> c (Min a) forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Min a)) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Min a)) $cgfoldl :: forall a (c :: * -> *). Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Min a -> c (Min a) gfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Min a -> c (Min a) $cgunfold :: forall a (c :: * -> *). Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Min a) gunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Min a) $ctoConstr :: forall a. Data a => Min a -> Constr toConstr :: Min a -> Constr $cdataTypeOf :: forall a. Data a => Min a -> DataType dataTypeOf :: Min a -> DataType $cdataCast1 :: forall a (t :: * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (Min a)) dataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Min a)) $cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Min a)) dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Min a)) $cgmapT :: forall a. Data a => (forall b. Data b => b -> b) -> Min a -> Min a gmapT :: (forall b. Data b => b -> b) -> Min a -> Min a $cgmapQl :: forall a r r'. Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r gmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r $cgmapQr :: forall a r r'. Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r $cgmapQ :: forall a u. Data a => (forall d. Data d => d -> u) -> Min a -> [u] gmapQ :: forall u. (forall d. Data d => d -> u) -> Min a -> [u] $cgmapQi :: forall a u. Data a => Int -> (forall d. Data d => d -> u) -> Min a -> u gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Min a -> u $cgmapM :: forall a (m :: * -> *). (Data a, Monad m) => (forall d. Data d => d -> m d) -> Min a -> m (Min a) gmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) $cgmapMp :: forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> Min a -> m (Min a) gmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) $cgmapMo :: forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> Min a -> m (Min a) gmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) Data -- ^ @since 4.9.0.0,(forall x. Min a -> Rep (Min a) x) -> (forall x. Rep (Min a) x -> Min a) -> Generic (Min a) forall x. Rep (Min a) x -> Min a forall x. Min a -> Rep (Min a) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall a x. Rep (Min a) x -> Min a forall a x. Min a -> Rep (Min a) x $cfrom :: forall a x. Min a -> Rep (Min a) x from :: forall x. Min a -> Rep (Min a) x $cto :: forall a x. Rep (Min a) x -> Min a to :: forall x. Rep (Min a) x -> Min a Generic -- ^ @since 4.9.0.0,(forall a. Min a -> Rep1 Min a) -> (forall a. Rep1 Min a -> Min a) -> Generic1 Min forall a. Rep1 Min a -> Min a forall a. Min a -> Rep1 Min a forall k (f :: k -> *). (forall (a :: k). f a -> Rep1 f a) -> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f $cfrom1 :: forall a. Min a -> Rep1 Min a from1 :: forall a. Min a -> Rep1 Min a $cto1 :: forall a. Rep1 Min a -> Min a to1 :: forall a. Rep1 Min a -> Min a Generic1 -- ^ @since 4.9.0.0)-- | @since 4.9.0.0instanceEnum a =>Enum (Min a )wheresucc :: Min a -> Min a succ (Min a a )=a -> Min a forall a. a -> Min a Min (a -> a forall a. Enum a => a -> a succ a a )pred :: Min a -> Min a pred (Min a a )=a -> Min a forall a. a -> Min a Min (a -> a forall a. Enum a => a -> a pred a a )toEnum :: Int -> Min a toEnum =a -> Min a forall a. a -> Min a Min (a -> Min a) -> (Int -> a) -> Int -> Min a forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> a forall a. Enum a => Int -> a toEnum fromEnum :: Min a -> Int fromEnum =a -> Int forall a. Enum a => a -> Int fromEnum (a -> Int) -> (Min a -> a) -> Min a -> Int forall b c a. (b -> c) -> (a -> b) -> a -> c . Min a -> a forall a. Min a -> a getMin enumFrom :: Min a -> [Min a] enumFrom (Min a a )=a -> Min a forall a. a -> Min a Min (a -> Min a) -> [a] -> [Min a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> [a] forall a. Enum a => a -> [a] enumFrom a a enumFromThen :: Min a -> Min a -> [Min a] enumFromThen (Min a a )(Min a b )=a -> Min a forall a. a -> Min a Min (a -> Min a) -> [a] -> [Min a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> [a] forall a. Enum a => a -> a -> [a] enumFromThen a a a b enumFromTo :: Min a -> Min a -> [Min a] enumFromTo (Min a a )(Min a b )=a -> Min a forall a. a -> Min a Min (a -> Min a) -> [a] -> [Min a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> [a] forall a. Enum a => a -> a -> [a] enumFromTo a a a b enumFromThenTo :: Min a -> Min a -> Min a -> [Min a] enumFromThenTo (Min a a )(Min a b )(Min a c )=a -> Min a forall a. a -> Min a Min (a -> Min a) -> [a] -> [Min a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> a -> [a] forall a. Enum a => a -> a -> a -> [a] enumFromThenTo a a a b a c -- | @since 4.9.0.0instanceOrd a =>Semigroup (Min a )where<> :: Min a -> Min a -> Min a (<>) =(a -> a -> a) -> Min a -> Min a -> Min a forall a b. Coercible a b => a -> b coerce (a -> a -> a forall a. Ord a => a -> a -> a min ::a ->a ->a )stimes :: forall b. Integral b => b -> Min a -> Min a stimes =b -> Min a -> Min a forall b a. Integral b => b -> a -> a stimesIdempotent -- | @since 4.9.0.0instance(Ord a ,Bounded a )=>Monoid (Min a )wheremempty :: Min a mempty =Min a forall a. Bounded a => a maxBound -- By default, we would get a lazy right fold. This forces the use of a strict-- left fold instead.mconcat :: [Min a] -> Min a mconcat =(Min a -> Min a -> Min a) -> Min a -> [Min a] -> Min a forall a b. (b -> a -> b) -> b -> [a] -> b List.foldl' Min a -> Min a -> Min a forall a. Semigroup a => a -> a -> a (<>) Min a forall a. Monoid a => a mempty {-# INLINEmconcat #-}-- | @since 4.9.0.0instanceFunctor Min wherefmap :: forall a b. (a -> b) -> Min a -> Min b fmap a -> b f (Min a x )=b -> Min b forall a. a -> Min a Min (a -> b f a x )-- | @since 4.9.0.0instanceFoldable Min wherefoldMap :: forall m a. Monoid m => (a -> m) -> Min a -> m foldMap a -> m f (Min a a )=a -> m f a a -- | @since 4.9.0.0instanceTraversable Min wheretraverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> Min a -> f (Min b) traverse a -> f b f (Min a a )=b -> Min b forall a. a -> Min a Min (b -> Min b) -> f b -> f (Min b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> f b f a a -- | @since 4.9.0.0instanceApplicative Min wherepure :: forall a. a -> Min a pure =a -> Min a forall a. a -> Min a Min Min a a <* :: forall a b. Min a -> Min b -> Min a <* Min b _=Min a a Min a _*> :: forall a b. Min a -> Min b -> Min b *> Min b a =Min b a <*> :: forall a b. Min (a -> b) -> Min a -> Min b (<*>) =Min (a -> b) -> Min a -> Min b forall a b. Coercible a b => a -> b coerce liftA2 :: forall a b c. (a -> b -> c) -> Min a -> Min b -> Min c liftA2 =(a -> b -> c) -> Min a -> Min b -> Min c forall a b. Coercible a b => a -> b coerce -- | @since 4.9.0.0instanceMonad Min where>> :: forall a b. Min a -> Min b -> Min b (>>) =Min a -> Min b -> Min b forall a b. Min a -> Min b -> Min b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b (*>) Min a a >>= :: forall a b. Min a -> (a -> Min b) -> Min b >>= a -> Min b f =a -> Min b f a a -- | @since 4.9.0.0instanceMonadFix Min wheremfix :: forall a. (a -> Min a) -> Min a mfix a -> Min a f =(Min a -> Min a) -> Min a forall a. (a -> a) -> a fix (a -> Min a f (a -> Min a) -> (Min a -> a) -> Min a -> Min a forall b c a. (b -> c) -> (a -> b) -> a -> c . Min a -> a forall a. Min a -> a getMin )-- | @since 4.9.0.0instanceNum a =>Num (Min a )where(Min a a )+ :: Min a -> Min a -> Min a + (Min a b )=a -> Min a forall a. a -> Min a Min (a a a -> a -> a forall a. Num a => a -> a -> a + a b )(Min a a )* :: Min a -> Min a -> Min a * (Min a b )=a -> Min a forall a. a -> Min a Min (a a a -> a -> a forall a. Num a => a -> a -> a * a b )(Min a a )- :: Min a -> Min a -> Min a - (Min a b )=a -> Min a forall a. a -> Min a Min (a a a -> a -> a forall a. Num a => a -> a -> a - a b )negate :: Min a -> Min a negate (Min a a )=a -> Min a forall a. a -> Min a Min (a -> a forall a. Num a => a -> a negate a a )abs :: Min a -> Min a abs (Min a a )=a -> Min a forall a. a -> Min a Min (a -> a forall a. Num a => a -> a abs a a )signum :: Min a -> Min a signum (Min a a )=a -> Min a forall a. a -> Min a Min (a -> a forall a. Num a => a -> a signum a a )fromInteger :: Integer -> Min a fromInteger =a -> Min a forall a. a -> Min a Min (a -> Min a) -> (Integer -> a) -> Integer -> Min a forall b c a. (b -> c) -> (a -> b) -> a -> c . Integer -> a forall a. Num a => Integer -> a fromInteger -- | The 'Max' 'Monoid' and 'Semigroup' always choose the bigger element as-- by the 'Ord' instance and 'max' of the contained type.---- ==== __Examples__---- >>> Max 42 <> Max 3-- Max 42---- >>> sconcat $ Max 1 :| [ Max n | n <- [2 .. 100]]-- Max {getMax = 100}newtypeMax a =Max {forall a. Max a -> a getMax ::a }deriving(Max a Max a -> Max a -> Bounded (Max a) forall a. a -> a -> Bounded a forall a. Bounded a => Max a $cminBound :: forall a. Bounded a => Max a minBound :: Max a $cmaxBound :: forall a. Bounded a => Max a maxBound :: Max a Bounded -- ^ @since 4.9.0.0,Max a -> Max a -> Bool (Max a -> Max a -> Bool) -> (Max a -> Max a -> Bool) -> Eq (Max a) forall a. Eq a => Max a -> Max a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall a. Eq a => Max a -> Max a -> Bool == :: Max a -> Max a -> Bool $c/= :: forall a. Eq a => Max a -> Max a -> Bool /= :: Max a -> Max a -> Bool Eq -- ^ @since 4.9.0.0,Eq (Max a) Eq (Max a) => (Max a -> Max a -> Ordering) -> (Max a -> Max a -> Bool) -> (Max a -> Max a -> Bool) -> (Max a -> Max a -> Bool) -> (Max a -> Max a -> Bool) -> (Max a -> Max a -> Max a) -> (Max a -> Max a -> Max a) -> Ord (Max a) Max a -> Max a -> Bool Max a -> Max a -> Ordering Max a -> Max a -> Max a forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall a. Ord a => Eq (Max a) forall a. Ord a => Max a -> Max a -> Bool forall a. Ord a => Max a -> Max a -> Ordering forall a. Ord a => Max a -> Max a -> Max a $ccompare :: forall a. Ord a => Max a -> Max a -> Ordering compare :: Max a -> Max a -> Ordering $c< :: forall a. Ord a => Max a -> Max a -> Bool < :: Max a -> Max a -> Bool $c<= :: forall a. Ord a => Max a -> Max a -> Bool <= :: Max a -> Max a -> Bool $c> :: forall a. Ord a => Max a -> Max a -> Bool > :: Max a -> Max a -> Bool $c>= :: forall a. Ord a => Max a -> Max a -> Bool >= :: Max a -> Max a -> Bool $cmax :: forall a. Ord a => Max a -> Max a -> Max a max :: Max a -> Max a -> Max a $cmin :: forall a. Ord a => Max a -> Max a -> Max a min :: Max a -> Max a -> Max a Ord -- ^ @since 4.9.0.0,Int -> Max a -> ShowS [Max a] -> ShowS Max a -> String (Int -> Max a -> ShowS) -> (Max a -> String) -> ([Max a] -> ShowS) -> Show (Max a) forall a. Show a => Int -> Max a -> ShowS forall a. Show a => [Max a] -> ShowS forall a. Show a => Max a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall a. Show a => Int -> Max a -> ShowS showsPrec :: Int -> Max a -> ShowS $cshow :: forall a. Show a => Max a -> String show :: Max a -> String $cshowList :: forall a. Show a => [Max a] -> ShowS showList :: [Max a] -> ShowS Show -- ^ @since 4.9.0.0,ReadPrec [Max a] ReadPrec (Max a) Int -> ReadS (Max a) ReadS [Max a] (Int -> ReadS (Max a)) -> ReadS [Max a] -> ReadPrec (Max a) -> ReadPrec [Max a] -> Read (Max a) forall a. Read a => ReadPrec [Max a] forall a. Read a => ReadPrec (Max a) forall a. Read a => Int -> ReadS (Max a) forall a. Read a => ReadS [Max a] forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: forall a. Read a => Int -> ReadS (Max a) readsPrec :: Int -> ReadS (Max a) $creadList :: forall a. Read a => ReadS [Max a] readList :: ReadS [Max a] $creadPrec :: forall a. Read a => ReadPrec (Max a) readPrec :: ReadPrec (Max a) $creadListPrec :: forall a. Read a => ReadPrec [Max a] readListPrec :: ReadPrec [Max a] Read -- ^ @since 4.9.0.0,Typeable (Max a) Typeable (Max a) => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Max a -> c (Max a)) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Max a)) -> (Max a -> Constr) -> (Max a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Max a))) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Max a))) -> ((forall b. Data b => b -> b) -> Max a -> Max a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r) -> (forall u. (forall d. Data d => d -> u) -> Max a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> Max a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Max a -> m (Max a)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a)) -> Data (Max a) Max a -> Constr Max a -> DataType (forall b. Data b => b -> b) -> Max a -> Max a forall a. Data a => Typeable (Max a) forall a. Data a => Max a -> Constr forall a. Data a => Max a -> DataType forall a. Data a => (forall b. Data b => b -> b) -> Max a -> Max a forall a u. Data a => Int -> (forall d. Data d => d -> u) -> Max a -> u forall a u. Data a => (forall d. Data d => d -> u) -> Max a -> [u] forall a r r'. Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r forall a r r'. Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r forall a (m :: * -> *). (Data a, Monad m) => (forall d. Data d => d -> m d) -> Max a -> m (Max a) forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> Max a -> m (Max a) forall a (c :: * -> *). Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Max a) forall a (c :: * -> *). Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Max a -> c (Max a) forall a (t :: * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (Max a)) forall a (t :: * -> * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Max a)) forall a. Typeable a => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> Max a -> u forall u. (forall d. Data d => d -> u) -> Max a -> [u] forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Max a) forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Max a -> c (Max a) forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Max a)) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Max a)) $cgfoldl :: forall a (c :: * -> *). Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Max a -> c (Max a) gfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Max a -> c (Max a) $cgunfold :: forall a (c :: * -> *). Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Max a) gunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Max a) $ctoConstr :: forall a. Data a => Max a -> Constr toConstr :: Max a -> Constr $cdataTypeOf :: forall a. Data a => Max a -> DataType dataTypeOf :: Max a -> DataType $cdataCast1 :: forall a (t :: * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (Max a)) dataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Max a)) $cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Max a)) dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Max a)) $cgmapT :: forall a. Data a => (forall b. Data b => b -> b) -> Max a -> Max a gmapT :: (forall b. Data b => b -> b) -> Max a -> Max a $cgmapQl :: forall a r r'. Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r gmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r $cgmapQr :: forall a r r'. Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r $cgmapQ :: forall a u. Data a => (forall d. Data d => d -> u) -> Max a -> [u] gmapQ :: forall u. (forall d. Data d => d -> u) -> Max a -> [u] $cgmapQi :: forall a u. Data a => Int -> (forall d. Data d => d -> u) -> Max a -> u gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Max a -> u $cgmapM :: forall a (m :: * -> *). (Data a, Monad m) => (forall d. Data d => d -> m d) -> Max a -> m (Max a) gmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) $cgmapMp :: forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> Max a -> m (Max a) gmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) $cgmapMo :: forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> Max a -> m (Max a) gmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) Data -- ^ @since 4.9.0.0,(forall x. Max a -> Rep (Max a) x) -> (forall x. Rep (Max a) x -> Max a) -> Generic (Max a) forall x. Rep (Max a) x -> Max a forall x. Max a -> Rep (Max a) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall a x. Rep (Max a) x -> Max a forall a x. Max a -> Rep (Max a) x $cfrom :: forall a x. Max a -> Rep (Max a) x from :: forall x. Max a -> Rep (Max a) x $cto :: forall a x. Rep (Max a) x -> Max a to :: forall x. Rep (Max a) x -> Max a Generic -- ^ @since 4.9.0.0,(forall a. Max a -> Rep1 Max a) -> (forall a. Rep1 Max a -> Max a) -> Generic1 Max forall a. Rep1 Max a -> Max a forall a. Max a -> Rep1 Max a forall k (f :: k -> *). (forall (a :: k). f a -> Rep1 f a) -> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f $cfrom1 :: forall a. Max a -> Rep1 Max a from1 :: forall a. Max a -> Rep1 Max a $cto1 :: forall a. Rep1 Max a -> Max a to1 :: forall a. Rep1 Max a -> Max a Generic1 -- ^ @since 4.9.0.0)-- | @since 4.9.0.0instanceEnum a =>Enum (Max a )wheresucc :: Max a -> Max a succ (Max a a )=a -> Max a forall a. a -> Max a Max (a -> a forall a. Enum a => a -> a succ a a )pred :: Max a -> Max a pred (Max a a )=a -> Max a forall a. a -> Max a Max (a -> a forall a. Enum a => a -> a pred a a )toEnum :: Int -> Max a toEnum =a -> Max a forall a. a -> Max a Max (a -> Max a) -> (Int -> a) -> Int -> Max a forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> a forall a. Enum a => Int -> a toEnum fromEnum :: Max a -> Int fromEnum =a -> Int forall a. Enum a => a -> Int fromEnum (a -> Int) -> (Max a -> a) -> Max a -> Int forall b c a. (b -> c) -> (a -> b) -> a -> c . Max a -> a forall a. Max a -> a getMax enumFrom :: Max a -> [Max a] enumFrom (Max a a )=a -> Max a forall a. a -> Max a Max (a -> Max a) -> [a] -> [Max a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> [a] forall a. Enum a => a -> [a] enumFrom a a enumFromThen :: Max a -> Max a -> [Max a] enumFromThen (Max a a )(Max a b )=a -> Max a forall a. a -> Max a Max (a -> Max a) -> [a] -> [Max a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> [a] forall a. Enum a => a -> a -> [a] enumFromThen a a a b enumFromTo :: Max a -> Max a -> [Max a] enumFromTo (Max a a )(Max a b )=a -> Max a forall a. a -> Max a Max (a -> Max a) -> [a] -> [Max a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> [a] forall a. Enum a => a -> a -> [a] enumFromTo a a a b enumFromThenTo :: Max a -> Max a -> Max a -> [Max a] enumFromThenTo (Max a a )(Max a b )(Max a c )=a -> Max a forall a. a -> Max a Max (a -> Max a) -> [a] -> [Max a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> a -> [a] forall a. Enum a => a -> a -> a -> [a] enumFromThenTo a a a b a c -- | @since 4.9.0.0instanceOrd a =>Semigroup (Max a )where<> :: Max a -> Max a -> Max a (<>) =(a -> a -> a) -> Max a -> Max a -> Max a forall a b. Coercible a b => a -> b coerce (a -> a -> a forall a. Ord a => a -> a -> a max ::a ->a ->a )stimes :: forall b. Integral b => b -> Max a -> Max a stimes =b -> Max a -> Max a forall b a. Integral b => b -> a -> a stimesIdempotent -- | @since 4.9.0.0instance(Ord a ,Bounded a )=>Monoid (Max a )wheremempty :: Max a mempty =Max a forall a. Bounded a => a minBound -- By default, we would get a lazy right fold. This forces the use of a strict-- left fold instead.mconcat :: [Max a] -> Max a mconcat =(Max a -> Max a -> Max a) -> Max a -> [Max a] -> Max a forall a b. (b -> a -> b) -> b -> [a] -> b List.foldl' Max a -> Max a -> Max a forall a. Semigroup a => a -> a -> a (<>) Max a forall a. Monoid a => a mempty {-# INLINEmconcat #-}-- | @since 4.9.0.0instanceFunctor Max wherefmap :: forall a b. (a -> b) -> Max a -> Max b fmap a -> b f (Max a x )=b -> Max b forall a. a -> Max a Max (a -> b f a x )-- | @since 4.9.0.0instanceFoldable Max wherefoldMap :: forall m a. Monoid m => (a -> m) -> Max a -> m foldMap a -> m f (Max a a )=a -> m f a a -- | @since 4.9.0.0instanceTraversable Max wheretraverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> Max a -> f (Max b) traverse a -> f b f (Max a a )=b -> Max b forall a. a -> Max a Max (b -> Max b) -> f b -> f (Max b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> f b f a a -- | @since 4.9.0.0instanceApplicative Max wherepure :: forall a. a -> Max a pure =a -> Max a forall a. a -> Max a Max Max a a <* :: forall a b. Max a -> Max b -> Max a <* Max b _=Max a a Max a _*> :: forall a b. Max a -> Max b -> Max b *> Max b a =Max b a <*> :: forall a b. Max (a -> b) -> Max a -> Max b (<*>) =Max (a -> b) -> Max a -> Max b forall a b. Coercible a b => a -> b coerce liftA2 :: forall a b c. (a -> b -> c) -> Max a -> Max b -> Max c liftA2 =(a -> b -> c) -> Max a -> Max b -> Max c forall a b. Coercible a b => a -> b coerce -- | @since 4.9.0.0instanceMonad Max where>> :: forall a b. Max a -> Max b -> Max b (>>) =Max a -> Max b -> Max b forall a b. Max a -> Max b -> Max b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b (*>) Max a a >>= :: forall a b. Max a -> (a -> Max b) -> Max b >>= a -> Max b f =a -> Max b f a a -- | @since 4.9.0.0instanceMonadFix Max wheremfix :: forall a. (a -> Max a) -> Max a mfix a -> Max a f =(Max a -> Max a) -> Max a forall a. (a -> a) -> a fix (a -> Max a f (a -> Max a) -> (Max a -> a) -> Max a -> Max a forall b c a. (b -> c) -> (a -> b) -> a -> c . Max a -> a forall a. Max a -> a getMax )-- | @since 4.9.0.0instanceNum a =>Num (Max a )where(Max a a )+ :: Max a -> Max a -> Max a + (Max a b )=a -> Max a forall a. a -> Max a Max (a a a -> a -> a forall a. Num a => a -> a -> a + a b )(Max a a )* :: Max a -> Max a -> Max a * (Max a b )=a -> Max a forall a. a -> Max a Max (a a a -> a -> a forall a. Num a => a -> a -> a * a b )(Max a a )- :: Max a -> Max a -> Max a - (Max a b )=a -> Max a forall a. a -> Max a Max (a a a -> a -> a forall a. Num a => a -> a -> a - a b )negate :: Max a -> Max a negate (Max a a )=a -> Max a forall a. a -> Max a Max (a -> a forall a. Num a => a -> a negate a a )abs :: Max a -> Max a abs (Max a a )=a -> Max a forall a. a -> Max a Max (a -> a forall a. Num a => a -> a abs a a )signum :: Max a -> Max a signum (Max a a )=a -> Max a forall a. a -> Max a Max (a -> a forall a. Num a => a -> a signum a a )fromInteger :: Integer -> Max a fromInteger =a -> Max a forall a. a -> Max a Max (a -> Max a) -> (Integer -> a) -> Integer -> Max a forall b c a. (b -> c) -> (a -> b) -> a -> c . Integer -> a forall a. Num a => Integer -> a fromInteger -- | 'Arg' isn't itself a 'Semigroup' in its own right, but it can be-- placed inside 'Min' and 'Max' to compute an arg min or arg max.---- ==== __Examples__---- >>> minimum [ Arg (x * x) x | x <- [-10 .. 10] ]-- Arg 0 0---- >>> maximum [ Arg (-0.2*x^2 + 1.5*x + 1) x | x <- [-10 .. 10] ]-- Arg 3.8 4.0---- >>> minimum [ Arg (-0.2*x^2 + 1.5*x + 1) x | x <- [-10 .. 10] ]-- Arg (-34.0) (-10.0)dataArg a b =Arg a -- ^ The argument used for comparisons in 'Eq' and 'Ord'.b -- ^ The "value" exposed via the 'Functor', 'Foldable' etc. instances.deriving(Int -> Arg a b -> ShowS [Arg a b] -> ShowS Arg a b -> String (Int -> Arg a b -> ShowS) -> (Arg a b -> String) -> ([Arg a b] -> ShowS) -> Show (Arg a b) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall a b. (Show a, Show b) => Int -> Arg a b -> ShowS forall a b. (Show a, Show b) => [Arg a b] -> ShowS forall a b. (Show a, Show b) => Arg a b -> String $cshowsPrec :: forall a b. (Show a, Show b) => Int -> Arg a b -> ShowS showsPrec :: Int -> Arg a b -> ShowS $cshow :: forall a b. (Show a, Show b) => Arg a b -> String show :: Arg a b -> String $cshowList :: forall a b. (Show a, Show b) => [Arg a b] -> ShowS showList :: [Arg a b] -> ShowS Show -- ^ @since 4.9.0.0,ReadPrec [Arg a b] ReadPrec (Arg a b) Int -> ReadS (Arg a b) ReadS [Arg a b] (Int -> ReadS (Arg a b)) -> ReadS [Arg a b] -> ReadPrec (Arg a b) -> ReadPrec [Arg a b] -> Read (Arg a b) forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a forall a b. (Read a, Read b) => ReadPrec [Arg a b] forall a b. (Read a, Read b) => ReadPrec (Arg a b) forall a b. (Read a, Read b) => Int -> ReadS (Arg a b) forall a b. (Read a, Read b) => ReadS [Arg a b] $creadsPrec :: forall a b. (Read a, Read b) => Int -> ReadS (Arg a b) readsPrec :: Int -> ReadS (Arg a b) $creadList :: forall a b. (Read a, Read b) => ReadS [Arg a b] readList :: ReadS [Arg a b] $creadPrec :: forall a b. (Read a, Read b) => ReadPrec (Arg a b) readPrec :: ReadPrec (Arg a b) $creadListPrec :: forall a b. (Read a, Read b) => ReadPrec [Arg a b] readListPrec :: ReadPrec [Arg a b] Read -- ^ @since 4.9.0.0,Typeable (Arg a b) Typeable (Arg a b) => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Arg a b -> c (Arg a b)) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Arg a b)) -> (Arg a b -> Constr) -> (Arg a b -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Arg a b))) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Arg a b))) -> ((forall b. Data b => b -> b) -> Arg a b -> Arg a b) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r) -> (forall u. (forall d. Data d => d -> u) -> Arg a b -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> Arg a b -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b)) -> Data (Arg a b) Arg a b -> Constr Arg a b -> DataType (forall b. Data b => b -> b) -> Arg a b -> Arg a b forall a. Typeable a => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> Arg a b -> u forall u. (forall d. Data d => d -> u) -> Arg a b -> [u] forall a b. (Data a, Data b) => Typeable (Arg a b) forall a b. (Data a, Data b) => Arg a b -> Constr forall a b. (Data a, Data b) => Arg a b -> DataType forall a b. (Data a, Data b) => (forall b. Data b => b -> b) -> Arg a b -> Arg a b forall a b u. (Data a, Data b) => Int -> (forall d. Data d => d -> u) -> Arg a b -> u forall a b u. (Data a, Data b) => (forall d. Data d => d -> u) -> Arg a b -> [u] forall a b r r'. (Data a, Data b) => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r forall a b r r'. (Data a, Data b) => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r forall a b (m :: * -> *). (Data a, Data b, Monad m) => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) forall a b (m :: * -> *). (Data a, Data b, MonadPlus m) => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) forall a b (c :: * -> *). (Data a, Data b) => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Arg a b) forall a b (c :: * -> *). (Data a, Data b) => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Arg a b -> c (Arg a b) forall a b (t :: * -> *) (c :: * -> *). (Data a, Data b, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (Arg a b)) forall a b (t :: * -> * -> *) (c :: * -> *). (Data a, Data b, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Arg a b)) forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Arg a b) forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Arg a b -> c (Arg a b) forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Arg a b)) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Arg a b)) $cgfoldl :: forall a b (c :: * -> *). (Data a, Data b) => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Arg a b -> c (Arg a b) gfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Arg a b -> c (Arg a b) $cgunfold :: forall a b (c :: * -> *). (Data a, Data b) => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Arg a b) gunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Arg a b) $ctoConstr :: forall a b. (Data a, Data b) => Arg a b -> Constr toConstr :: Arg a b -> Constr $cdataTypeOf :: forall a b. (Data a, Data b) => Arg a b -> DataType dataTypeOf :: Arg a b -> DataType $cdataCast1 :: forall a b (t :: * -> *) (c :: * -> *). (Data a, Data b, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (Arg a b)) dataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Arg a b)) $cdataCast2 :: forall a b (t :: * -> * -> *) (c :: * -> *). (Data a, Data b, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Arg a b)) dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Arg a b)) $cgmapT :: forall a b. (Data a, Data b) => (forall b. Data b => b -> b) -> Arg a b -> Arg a b gmapT :: (forall b. Data b => b -> b) -> Arg a b -> Arg a b $cgmapQl :: forall a b r r'. (Data a, Data b) => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r gmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r $cgmapQr :: forall a b r r'. (Data a, Data b) => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r $cgmapQ :: forall a b u. (Data a, Data b) => (forall d. Data d => d -> u) -> Arg a b -> [u] gmapQ :: forall u. (forall d. Data d => d -> u) -> Arg a b -> [u] $cgmapQi :: forall a b u. (Data a, Data b) => Int -> (forall d. Data d => d -> u) -> Arg a b -> u gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Arg a b -> u $cgmapM :: forall a b (m :: * -> *). (Data a, Data b, Monad m) => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) gmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) $cgmapMp :: forall a b (m :: * -> *). (Data a, Data b, MonadPlus m) => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) gmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) $cgmapMo :: forall a b (m :: * -> *). (Data a, Data b, MonadPlus m) => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) gmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) Data -- ^ @since 4.9.0.0,(forall x. Arg a b -> Rep (Arg a b) x) -> (forall x. Rep (Arg a b) x -> Arg a b) -> Generic (Arg a b) forall x. Rep (Arg a b) x -> Arg a b forall x. Arg a b -> Rep (Arg a b) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall a b x. Rep (Arg a b) x -> Arg a b forall a b x. Arg a b -> Rep (Arg a b) x $cfrom :: forall a b x. Arg a b -> Rep (Arg a b) x from :: forall x. Arg a b -> Rep (Arg a b) x $cto :: forall a b x. Rep (Arg a b) x -> Arg a b to :: forall x. Rep (Arg a b) x -> Arg a b Generic -- ^ @since 4.9.0.0,(forall a. Arg a a -> Rep1 (Arg a) a) -> (forall a. Rep1 (Arg a) a -> Arg a a) -> Generic1 (Arg a) forall a. Rep1 (Arg a) a -> Arg a a forall a. Arg a a -> Rep1 (Arg a) a forall a a. Rep1 (Arg a) a -> Arg a a forall a a. Arg a a -> Rep1 (Arg a) a forall k (f :: k -> *). (forall (a :: k). f a -> Rep1 f a) -> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f $cfrom1 :: forall a a. Arg a a -> Rep1 (Arg a) a from1 :: forall a. Arg a a -> Rep1 (Arg a) a $cto1 :: forall a a. Rep1 (Arg a) a -> Arg a a to1 :: forall a. Rep1 (Arg a) a -> Arg a a Generic1 -- ^ @since 4.9.0.0)-- |-- ==== __Examples__---- >>> Min (Arg 0 ()) <> Min (Arg 1 ())-- Min {getMin = Arg 0 ()}---- >>> minimum [ Arg (length name) name | name <- ["violencia", "lea", "pixie"]]-- Arg 3 "lea"typeArgMin a b =Min (Arg a b )-- |-- ==== __Examples__---- >>> Max (Arg 0 ()) <> Max (Arg 1 ())-- Max {getMax = Arg 1 ()}---- >>> maximum [ Arg (length name) name | name <- ["violencia", "lea", "pixie"]]-- Arg 9 "violencia"typeArgMax a b =Max (Arg a b )-- | @since 4.9.0.0instanceFunctor (Arg a )wherefmap :: forall a b. (a -> b) -> Arg a a -> Arg a b fmap a -> b f (Arg a x a a )=a -> b -> Arg a b forall a b. a -> b -> Arg a b Arg a x (a -> b f a a )-- | @since 4.9.0.0instanceFoldable (Arg a )wherefoldMap :: forall m a. Monoid m => (a -> m) -> Arg a a -> m foldMap a -> m f (Arg a _a a )=a -> m f a a -- | @since 4.9.0.0instanceTraversable (Arg a )wheretraverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> Arg a a -> f (Arg a b) traverse a -> f b f (Arg a x a a )=a -> b -> Arg a b forall a b. a -> b -> Arg a b Arg a x (b -> Arg a b) -> f b -> f (Arg a b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> f b f a a -- | @since 4.9.0.0instanceEq a =>Eq (Arg a b )whereArg a a b _== :: Arg a b -> Arg a b -> Bool == Arg a b b _=a a a -> a -> Bool forall a. Eq a => a -> a -> Bool == a b -- | @since 4.9.0.0instanceOrd a =>Ord (Arg a b )whereArg a a b _compare :: Arg a b -> Arg a b -> Ordering `compare` Arg a b b _=a -> a -> Ordering forall a. Ord a => a -> a -> Ordering compare a a a b min :: Arg a b -> Arg a b -> Arg a b min x :: Arg a b x @(Arg a a b _)y :: Arg a b y @(Arg a b b _)|a a a -> a -> Bool forall a. Ord a => a -> a -> Bool <= a b =Arg a b x |Bool otherwise =Arg a b y max :: Arg a b -> Arg a b -> Arg a b max x :: Arg a b x @(Arg a a b _)y :: Arg a b y @(Arg a b b _)|a a a -> a -> Bool forall a. Ord a => a -> a -> Bool >= a b =Arg a b x |Bool otherwise =Arg a b y -- | @since 4.9.0.0instanceBifunctor Arg wherebimap :: forall a b c d. (a -> b) -> (c -> d) -> Arg a c -> Arg b d bimap a -> b f c -> d g (Arg a a c b )=b -> d -> Arg b d forall a b. a -> b -> Arg a b Arg (a -> b f a a )(c -> d g c b )-- | @since 4.10.0.0instanceBifoldable Arg wherebifoldMap :: forall m a b. Monoid m => (a -> m) -> (b -> m) -> Arg a b -> m bifoldMap a -> m f b -> m g (Arg a a b b )=a -> m f a a m -> m -> m forall a. Semigroup a => a -> a -> a <> b -> m g b b -- | @since 4.10.0.0instanceBitraversable Arg wherebitraverse :: forall (f :: * -> *) a c b d. Applicative f => (a -> f c) -> (b -> f d) -> Arg a b -> f (Arg c d) bitraverse a -> f c f b -> f d g (Arg a a b b )=c -> d -> Arg c d forall a b. a -> b -> Arg a b Arg (c -> d -> Arg c d) -> f c -> f (d -> Arg c d) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> f c f a a f (d -> Arg c d) -> f d -> f (Arg c d) forall a b. f (a -> b) -> f a -> f b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> b -> f d g b b -- |-- Beware that @Data.Semigroup.@'First' is different from-- @Data.Monoid.@'Data.Monoid.First'. The former simply returns the first value,-- so @Data.Semigroup.First Nothing <> x = Data.Semigroup.First Nothing@.-- The latter returns the first non-'Nothing',-- thus @Data.Monoid.First Nothing <> x = x@.---- ==== __Examples__---- >>> First 0 <> First 10-- First 0---- >>> sconcat $ First 1 :| [ First n | n <- [2 ..] ]-- First 1newtypeFirst a =First {forall a. First a -> a getFirst ::a }deriving(First a First a -> First a -> Bounded (First a) forall a. a -> a -> Bounded a forall a. Bounded a => First a $cminBound :: forall a. Bounded a => First a minBound :: First a $cmaxBound :: forall a. Bounded a => First a maxBound :: First a Bounded -- ^ @since 4.9.0.0,First a -> First a -> Bool (First a -> First a -> Bool) -> (First a -> First a -> Bool) -> Eq (First a) forall a. Eq a => First a -> First a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall a. Eq a => First a -> First a -> Bool == :: First a -> First a -> Bool $c/= :: forall a. Eq a => First a -> First a -> Bool /= :: First a -> First a -> Bool Eq -- ^ @since 4.9.0.0,Eq (First a) Eq (First a) => (First a -> First a -> Ordering) -> (First a -> First a -> Bool) -> (First a -> First a -> Bool) -> (First a -> First a -> Bool) -> (First a -> First a -> Bool) -> (First a -> First a -> First a) -> (First a -> First a -> First a) -> Ord (First a) First a -> First a -> Bool First a -> First a -> Ordering First a -> First a -> First a forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall a. Ord a => Eq (First a) forall a. Ord a => First a -> First a -> Bool forall a. Ord a => First a -> First a -> Ordering forall a. Ord a => First a -> First a -> First a $ccompare :: forall a. Ord a => First a -> First a -> Ordering compare :: First a -> First a -> Ordering $c< :: forall a. Ord a => First a -> First a -> Bool < :: First a -> First a -> Bool $c<= :: forall a. Ord a => First a -> First a -> Bool <= :: First a -> First a -> Bool $c> :: forall a. Ord a => First a -> First a -> Bool > :: First a -> First a -> Bool $c>= :: forall a. Ord a => First a -> First a -> Bool >= :: First a -> First a -> Bool $cmax :: forall a. Ord a => First a -> First a -> First a max :: First a -> First a -> First a $cmin :: forall a. Ord a => First a -> First a -> First a min :: First a -> First a -> First a Ord -- ^ @since 4.9.0.0,Int -> First a -> ShowS [First a] -> ShowS First a -> String (Int -> First a -> ShowS) -> (First a -> String) -> ([First a] -> ShowS) -> Show (First a) forall a. Show a => Int -> First a -> ShowS forall a. Show a => [First a] -> ShowS forall a. Show a => First a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall a. Show a => Int -> First a -> ShowS showsPrec :: Int -> First a -> ShowS $cshow :: forall a. Show a => First a -> String show :: First a -> String $cshowList :: forall a. Show a => [First a] -> ShowS showList :: [First a] -> ShowS Show -- ^ @since 4.9.0.0,ReadPrec [First a] ReadPrec (First a) Int -> ReadS (First a) ReadS [First a] (Int -> ReadS (First a)) -> ReadS [First a] -> ReadPrec (First a) -> ReadPrec [First a] -> Read (First a) forall a. Read a => ReadPrec [First a] forall a. Read a => ReadPrec (First a) forall a. Read a => Int -> ReadS (First a) forall a. Read a => ReadS [First a] forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: forall a. Read a => Int -> ReadS (First a) readsPrec :: Int -> ReadS (First a) $creadList :: forall a. Read a => ReadS [First a] readList :: ReadS [First a] $creadPrec :: forall a. Read a => ReadPrec (First a) readPrec :: ReadPrec (First a) $creadListPrec :: forall a. Read a => ReadPrec [First a] readListPrec :: ReadPrec [First a] Read -- ^ @since 4.9.0.0,Typeable (First a) Typeable (First a) => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> First a -> c (First a)) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (First a)) -> (First a -> Constr) -> (First a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (First a))) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (First a))) -> ((forall b. Data b => b -> b) -> First a -> First a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r) -> (forall u. (forall d. Data d => d -> u) -> First a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> First a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> First a -> m (First a)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a)) -> Data (First a) First a -> Constr First a -> DataType (forall b. Data b => b -> b) -> First a -> First a forall a. Data a => Typeable (First a) forall a. Data a => First a -> Constr forall a. Data a => First a -> DataType forall a. Data a => (forall b. Data b => b -> b) -> First a -> First a forall a u. Data a => Int -> (forall d. Data d => d -> u) -> First a -> u forall a u. Data a => (forall d. Data d => d -> u) -> First a -> [u] forall a r r'. Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r forall a r r'. Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r forall a (m :: * -> *). (Data a, Monad m) => (forall d. Data d => d -> m d) -> First a -> m (First a) forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> First a -> m (First a) forall a (c :: * -> *). Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (First a) forall a (c :: * -> *). Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> First a -> c (First a) forall a (t :: * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (First a)) forall a (t :: * -> * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (First a)) forall a. Typeable a => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> First a -> u forall u. (forall d. Data d => d -> u) -> First a -> [u] forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> First a -> m (First a) forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a) forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (First a) forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> First a -> c (First a) forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (First a)) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (First a)) $cgfoldl :: forall a (c :: * -> *). Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> First a -> c (First a) gfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> First a -> c (First a) $cgunfold :: forall a (c :: * -> *). Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (First a) gunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (First a) $ctoConstr :: forall a. Data a => First a -> Constr toConstr :: First a -> Constr $cdataTypeOf :: forall a. Data a => First a -> DataType dataTypeOf :: First a -> DataType $cdataCast1 :: forall a (t :: * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (First a)) dataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (First a)) $cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (First a)) dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (First a)) $cgmapT :: forall a. Data a => (forall b. Data b => b -> b) -> First a -> First a gmapT :: (forall b. Data b => b -> b) -> First a -> First a $cgmapQl :: forall a r r'. Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r gmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r $cgmapQr :: forall a r r'. Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r $cgmapQ :: forall a u. Data a => (forall d. Data d => d -> u) -> First a -> [u] gmapQ :: forall u. (forall d. Data d => d -> u) -> First a -> [u] $cgmapQi :: forall a u. Data a => Int -> (forall d. Data d => d -> u) -> First a -> u gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> First a -> u $cgmapM :: forall a (m :: * -> *). (Data a, Monad m) => (forall d. Data d => d -> m d) -> First a -> m (First a) gmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> First a -> m (First a) $cgmapMp :: forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> First a -> m (First a) gmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a) $cgmapMo :: forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> First a -> m (First a) gmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a) Data -- ^ @since 4.9.0.0,(forall x. First a -> Rep (First a) x) -> (forall x. Rep (First a) x -> First a) -> Generic (First a) forall x. Rep (First a) x -> First a forall x. First a -> Rep (First a) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall a x. Rep (First a) x -> First a forall a x. First a -> Rep (First a) x $cfrom :: forall a x. First a -> Rep (First a) x from :: forall x. First a -> Rep (First a) x $cto :: forall a x. Rep (First a) x -> First a to :: forall x. Rep (First a) x -> First a Generic -- ^ @since 4.9.0.0,(forall a. First a -> Rep1 First a) -> (forall a. Rep1 First a -> First a) -> Generic1 First forall a. Rep1 First a -> First a forall a. First a -> Rep1 First a forall k (f :: k -> *). (forall (a :: k). f a -> Rep1 f a) -> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f $cfrom1 :: forall a. First a -> Rep1 First a from1 :: forall a. First a -> Rep1 First a $cto1 :: forall a. Rep1 First a -> First a to1 :: forall a. Rep1 First a -> First a Generic1 -- ^ @since 4.9.0.0)-- | @since 4.9.0.0instanceEnum a =>Enum (First a )wheresucc :: First a -> First a succ (First a a )=a -> First a forall a. a -> First a First (a -> a forall a. Enum a => a -> a succ a a )pred :: First a -> First a pred (First a a )=a -> First a forall a. a -> First a First (a -> a forall a. Enum a => a -> a pred a a )toEnum :: Int -> First a toEnum =a -> First a forall a. a -> First a First (a -> First a) -> (Int -> a) -> Int -> First a forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> a forall a. Enum a => Int -> a toEnum fromEnum :: First a -> Int fromEnum =a -> Int forall a. Enum a => a -> Int fromEnum (a -> Int) -> (First a -> a) -> First a -> Int forall b c a. (b -> c) -> (a -> b) -> a -> c . First a -> a forall a. First a -> a getFirst enumFrom :: First a -> [First a] enumFrom (First a a )=a -> First a forall a. a -> First a First (a -> First a) -> [a] -> [First a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> [a] forall a. Enum a => a -> [a] enumFrom a a enumFromThen :: First a -> First a -> [First a] enumFromThen (First a a )(First a b )=a -> First a forall a. a -> First a First (a -> First a) -> [a] -> [First a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> [a] forall a. Enum a => a -> a -> [a] enumFromThen a a a b enumFromTo :: First a -> First a -> [First a] enumFromTo (First a a )(First a b )=a -> First a forall a. a -> First a First (a -> First a) -> [a] -> [First a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> [a] forall a. Enum a => a -> a -> [a] enumFromTo a a a b enumFromThenTo :: First a -> First a -> First a -> [First a] enumFromThenTo (First a a )(First a b )(First a c )=a -> First a forall a. a -> First a First (a -> First a) -> [a] -> [First a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> a -> [a] forall a. Enum a => a -> a -> a -> [a] enumFromThenTo a a a b a c -- | @since 4.9.0.0instanceSemigroup (First a )whereFirst a a <> :: First a -> First a -> First a <> First a _=First a a stimes :: forall b. Integral b => b -> First a -> First a stimes =b -> First a -> First a forall b a. Integral b => b -> a -> a stimesIdempotent -- | @since 4.9.0.0instanceFunctor First wherefmap :: forall a b. (a -> b) -> First a -> First b fmap a -> b f (First a x )=b -> First b forall a. a -> First a First (a -> b f a x )-- | @since 4.9.0.0instanceFoldable First wherefoldMap :: forall m a. Monoid m => (a -> m) -> First a -> m foldMap a -> m f (First a a )=a -> m f a a -- | @since 4.9.0.0instanceTraversable First wheretraverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> First a -> f (First b) traverse a -> f b f (First a a )=b -> First b forall a. a -> First a First (b -> First b) -> f b -> f (First b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> f b f a a -- | @since 4.9.0.0instanceApplicative First wherepure :: forall a. a -> First a pure a x =a -> First a forall a. a -> First a First a x First a a <* :: forall a b. First a -> First b -> First a <* First b _=First a a First a _*> :: forall a b. First a -> First b -> First b *> First b a =First b a <*> :: forall a b. First (a -> b) -> First a -> First b (<*>) =First (a -> b) -> First a -> First b forall a b. Coercible a b => a -> b coerce liftA2 :: forall a b c. (a -> b -> c) -> First a -> First b -> First c liftA2 =(a -> b -> c) -> First a -> First b -> First c forall a b. Coercible a b => a -> b coerce -- | @since 4.9.0.0instanceMonad First where>> :: forall a b. First a -> First b -> First b (>>) =First a -> First b -> First b forall a b. First a -> First b -> First b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b (*>) First a a >>= :: forall a b. First a -> (a -> First b) -> First b >>= a -> First b f =a -> First b f a a -- | @since 4.9.0.0instanceMonadFix First wheremfix :: forall a. (a -> First a) -> First a mfix a -> First a f =(First a -> First a) -> First a forall a. (a -> a) -> a fix (a -> First a f (a -> First a) -> (First a -> a) -> First a -> First a forall b c a. (b -> c) -> (a -> b) -> a -> c . First a -> a forall a. First a -> a getFirst )-- |-- Beware that @Data.Semigroup.@'Last' is different from-- @Data.Monoid.@'Data.Monoid.Last'. The former simply returns the last value,-- so @x <> Data.Semigroup.Last Nothing = Data.Semigroup.Last Nothing@.-- The latter returns the last non-'Nothing',-- thus @x <> Data.Monoid.Last Nothing = x@.---- ==== __Examples__---- >>> Last 0 <> Last 10-- Last {getLast = 10}---- >>> sconcat $ Last 1 :| [ Last n | n <- [2..]]-- Last {getLast = * hangs forever *newtypeLast a =Last {forall a. Last a -> a getLast ::a }deriving(Last a Last a -> Last a -> Bounded (Last a) forall a. a -> a -> Bounded a forall a. Bounded a => Last a $cminBound :: forall a. Bounded a => Last a minBound :: Last a $cmaxBound :: forall a. Bounded a => Last a maxBound :: Last a Bounded -- ^ @since 4.9.0.0,Last a -> Last a -> Bool (Last a -> Last a -> Bool) -> (Last a -> Last a -> Bool) -> Eq (Last a) forall a. Eq a => Last a -> Last a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall a. Eq a => Last a -> Last a -> Bool == :: Last a -> Last a -> Bool $c/= :: forall a. Eq a => Last a -> Last a -> Bool /= :: Last a -> Last a -> Bool Eq -- ^ @since 4.9.0.0,Eq (Last a) Eq (Last a) => (Last a -> Last a -> Ordering) -> (Last a -> Last a -> Bool) -> (Last a -> Last a -> Bool) -> (Last a -> Last a -> Bool) -> (Last a -> Last a -> Bool) -> (Last a -> Last a -> Last a) -> (Last a -> Last a -> Last a) -> Ord (Last a) Last a -> Last a -> Bool Last a -> Last a -> Ordering Last a -> Last a -> Last a forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall a. Ord a => Eq (Last a) forall a. Ord a => Last a -> Last a -> Bool forall a. Ord a => Last a -> Last a -> Ordering forall a. Ord a => Last a -> Last a -> Last a $ccompare :: forall a. Ord a => Last a -> Last a -> Ordering compare :: Last a -> Last a -> Ordering $c< :: forall a. Ord a => Last a -> Last a -> Bool < :: Last a -> Last a -> Bool $c<= :: forall a. Ord a => Last a -> Last a -> Bool <= :: Last a -> Last a -> Bool $c> :: forall a. Ord a => Last a -> Last a -> Bool > :: Last a -> Last a -> Bool $c>= :: forall a. Ord a => Last a -> Last a -> Bool >= :: Last a -> Last a -> Bool $cmax :: forall a. Ord a => Last a -> Last a -> Last a max :: Last a -> Last a -> Last a $cmin :: forall a. Ord a => Last a -> Last a -> Last a min :: Last a -> Last a -> Last a Ord -- ^ @since 4.9.0.0,Int -> Last a -> ShowS [Last a] -> ShowS Last a -> String (Int -> Last a -> ShowS) -> (Last a -> String) -> ([Last a] -> ShowS) -> Show (Last a) forall a. Show a => Int -> Last a -> ShowS forall a. Show a => [Last a] -> ShowS forall a. Show a => Last a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall a. Show a => Int -> Last a -> ShowS showsPrec :: Int -> Last a -> ShowS $cshow :: forall a. Show a => Last a -> String show :: Last a -> String $cshowList :: forall a. Show a => [Last a] -> ShowS showList :: [Last a] -> ShowS Show -- ^ @since 4.9.0.0,ReadPrec [Last a] ReadPrec (Last a) Int -> ReadS (Last a) ReadS [Last a] (Int -> ReadS (Last a)) -> ReadS [Last a] -> ReadPrec (Last a) -> ReadPrec [Last a] -> Read (Last a) forall a. Read a => ReadPrec [Last a] forall a. Read a => ReadPrec (Last a) forall a. Read a => Int -> ReadS (Last a) forall a. Read a => ReadS [Last a] forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: forall a. Read a => Int -> ReadS (Last a) readsPrec :: Int -> ReadS (Last a) $creadList :: forall a. Read a => ReadS [Last a] readList :: ReadS [Last a] $creadPrec :: forall a. Read a => ReadPrec (Last a) readPrec :: ReadPrec (Last a) $creadListPrec :: forall a. Read a => ReadPrec [Last a] readListPrec :: ReadPrec [Last a] Read -- ^ @since 4.9.0.0,Typeable (Last a) Typeable (Last a) => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Last a -> c (Last a)) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Last a)) -> (Last a -> Constr) -> (Last a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Last a))) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Last a))) -> ((forall b. Data b => b -> b) -> Last a -> Last a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r) -> (forall u. (forall d. Data d => d -> u) -> Last a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> Last a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Last a -> m (Last a)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a)) -> Data (Last a) Last a -> Constr Last a -> DataType (forall b. Data b => b -> b) -> Last a -> Last a forall a. Data a => Typeable (Last a) forall a. Data a => Last a -> Constr forall a. Data a => Last a -> DataType forall a. Data a => (forall b. Data b => b -> b) -> Last a -> Last a forall a u. Data a => Int -> (forall d. Data d => d -> u) -> Last a -> u forall a u. Data a => (forall d. Data d => d -> u) -> Last a -> [u] forall a r r'. Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r forall a r r'. Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r forall a (m :: * -> *). (Data a, Monad m) => (forall d. Data d => d -> m d) -> Last a -> m (Last a) forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> Last a -> m (Last a) forall a (c :: * -> *). Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Last a) forall a (c :: * -> *). Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Last a -> c (Last a) forall a (t :: * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (Last a)) forall a (t :: * -> * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Last a)) forall a. Typeable a => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> Last a -> u forall u. (forall d. Data d => d -> u) -> Last a -> [u] forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Last a) forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Last a -> c (Last a) forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Last a)) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Last a)) $cgfoldl :: forall a (c :: * -> *). Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Last a -> c (Last a) gfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Last a -> c (Last a) $cgunfold :: forall a (c :: * -> *). Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Last a) gunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Last a) $ctoConstr :: forall a. Data a => Last a -> Constr toConstr :: Last a -> Constr $cdataTypeOf :: forall a. Data a => Last a -> DataType dataTypeOf :: Last a -> DataType $cdataCast1 :: forall a (t :: * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (Last a)) dataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Last a)) $cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Last a)) dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Last a)) $cgmapT :: forall a. Data a => (forall b. Data b => b -> b) -> Last a -> Last a gmapT :: (forall b. Data b => b -> b) -> Last a -> Last a $cgmapQl :: forall a r r'. Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r gmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r $cgmapQr :: forall a r r'. Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r $cgmapQ :: forall a u. Data a => (forall d. Data d => d -> u) -> Last a -> [u] gmapQ :: forall u. (forall d. Data d => d -> u) -> Last a -> [u] $cgmapQi :: forall a u. Data a => Int -> (forall d. Data d => d -> u) -> Last a -> u gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Last a -> u $cgmapM :: forall a (m :: * -> *). (Data a, Monad m) => (forall d. Data d => d -> m d) -> Last a -> m (Last a) gmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) $cgmapMp :: forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> Last a -> m (Last a) gmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) $cgmapMo :: forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> Last a -> m (Last a) gmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) Data -- ^ @since 4.9.0.0,(forall x. Last a -> Rep (Last a) x) -> (forall x. Rep (Last a) x -> Last a) -> Generic (Last a) forall x. Rep (Last a) x -> Last a forall x. Last a -> Rep (Last a) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall a x. Rep (Last a) x -> Last a forall a x. Last a -> Rep (Last a) x $cfrom :: forall a x. Last a -> Rep (Last a) x from :: forall x. Last a -> Rep (Last a) x $cto :: forall a x. Rep (Last a) x -> Last a to :: forall x. Rep (Last a) x -> Last a Generic -- ^ @since 4.9.0.0,(forall a. Last a -> Rep1 Last a) -> (forall a. Rep1 Last a -> Last a) -> Generic1 Last forall a. Rep1 Last a -> Last a forall a. Last a -> Rep1 Last a forall k (f :: k -> *). (forall (a :: k). f a -> Rep1 f a) -> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f $cfrom1 :: forall a. Last a -> Rep1 Last a from1 :: forall a. Last a -> Rep1 Last a $cto1 :: forall a. Rep1 Last a -> Last a to1 :: forall a. Rep1 Last a -> Last a Generic1 -- ^ @since 4.9.0.0)-- | @since 4.9.0.0instanceEnum a =>Enum (Last a )wheresucc :: Last a -> Last a succ (Last a a )=a -> Last a forall a. a -> Last a Last (a -> a forall a. Enum a => a -> a succ a a )pred :: Last a -> Last a pred (Last a a )=a -> Last a forall a. a -> Last a Last (a -> a forall a. Enum a => a -> a pred a a )toEnum :: Int -> Last a toEnum =a -> Last a forall a. a -> Last a Last (a -> Last a) -> (Int -> a) -> Int -> Last a forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> a forall a. Enum a => Int -> a toEnum fromEnum :: Last a -> Int fromEnum =a -> Int forall a. Enum a => a -> Int fromEnum (a -> Int) -> (Last a -> a) -> Last a -> Int forall b c a. (b -> c) -> (a -> b) -> a -> c . Last a -> a forall a. Last a -> a getLast enumFrom :: Last a -> [Last a] enumFrom (Last a a )=a -> Last a forall a. a -> Last a Last (a -> Last a) -> [a] -> [Last a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> [a] forall a. Enum a => a -> [a] enumFrom a a enumFromThen :: Last a -> Last a -> [Last a] enumFromThen (Last a a )(Last a b )=a -> Last a forall a. a -> Last a Last (a -> Last a) -> [a] -> [Last a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> [a] forall a. Enum a => a -> a -> [a] enumFromThen a a a b enumFromTo :: Last a -> Last a -> [Last a] enumFromTo (Last a a )(Last a b )=a -> Last a forall a. a -> Last a Last (a -> Last a) -> [a] -> [Last a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> [a] forall a. Enum a => a -> a -> [a] enumFromTo a a a b enumFromThenTo :: Last a -> Last a -> Last a -> [Last a] enumFromThenTo (Last a a )(Last a b )(Last a c )=a -> Last a forall a. a -> Last a Last (a -> Last a) -> [a] -> [Last a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> a -> [a] forall a. Enum a => a -> a -> a -> [a] enumFromThenTo a a a b a c -- | @since 4.9.0.0instanceSemigroup (Last a )whereLast a _<> :: Last a -> Last a -> Last a <> Last a b =Last a b stimes :: forall b. Integral b => b -> Last a -> Last a stimes =b -> Last a -> Last a forall b a. Integral b => b -> a -> a stimesIdempotent -- | @since 4.9.0.0instanceFunctor Last wherefmap :: forall a b. (a -> b) -> Last a -> Last b fmap a -> b f (Last a x )=b -> Last b forall a. a -> Last a Last (a -> b f a x )a a <$ :: forall a b. a -> Last b -> Last a <$ Last b _=a -> Last a forall a. a -> Last a Last a a -- | @since 4.9.0.0instanceFoldable Last wherefoldMap :: forall m a. Monoid m => (a -> m) -> Last a -> m foldMap a -> m f (Last a a )=a -> m f a a -- | @since 4.9.0.0instanceTraversable Last wheretraverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> Last a -> f (Last b) traverse a -> f b f (Last a a )=b -> Last b forall a. a -> Last a Last (b -> Last b) -> f b -> f (Last b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> f b f a a -- | @since 4.9.0.0instanceApplicative Last wherepure :: forall a. a -> Last a pure =a -> Last a forall a. a -> Last a Last Last a a <* :: forall a b. Last a -> Last b -> Last a <* Last b _=Last a a Last a _*> :: forall a b. Last a -> Last b -> Last b *> Last b a =Last b a <*> :: forall a b. Last (a -> b) -> Last a -> Last b (<*>) =Last (a -> b) -> Last a -> Last b forall a b. Coercible a b => a -> b coerce liftA2 :: forall a b c. (a -> b -> c) -> Last a -> Last b -> Last c liftA2 =(a -> b -> c) -> Last a -> Last b -> Last c forall a b. Coercible a b => a -> b coerce -- | @since 4.9.0.0instanceMonad Last where>> :: forall a b. Last a -> Last b -> Last b (>>) =Last a -> Last b -> Last b forall a b. Last a -> Last b -> Last b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b (*>) Last a a >>= :: forall a b. Last a -> (a -> Last b) -> Last b >>= a -> Last b f =a -> Last b f a a -- | @since 4.9.0.0instanceMonadFix Last wheremfix :: forall a. (a -> Last a) -> Last a mfix a -> Last a f =(Last a -> Last a) -> Last a forall a. (a -> a) -> a fix (a -> Last a f (a -> Last a) -> (Last a -> a) -> Last a -> Last a forall b c a. (b -> c) -> (a -> b) -> a -> c . Last a -> a forall a. Last a -> a getLast )-- | Provide a Semigroup for an arbitrary Monoid.---- __NOTE__: This is not needed anymore since 'Semigroup' became a superclass of-- 'Monoid' in /base-4.11/ and this newtype be deprecated at some point in the future.newtypeWrappedMonoid m =WrapMonoid {forall m. WrappedMonoid m -> m unwrapMonoid ::m }deriving(WrappedMonoid m WrappedMonoid m -> WrappedMonoid m -> Bounded (WrappedMonoid m) forall a. a -> a -> Bounded a forall m. Bounded m => WrappedMonoid m $cminBound :: forall m. Bounded m => WrappedMonoid m minBound :: WrappedMonoid m $cmaxBound :: forall m. Bounded m => WrappedMonoid m maxBound :: WrappedMonoid m Bounded -- ^ @since 4.9.0.0,WrappedMonoid m -> WrappedMonoid m -> Bool (WrappedMonoid m -> WrappedMonoid m -> Bool) -> (WrappedMonoid m -> WrappedMonoid m -> Bool) -> Eq (WrappedMonoid m) forall m. Eq m => WrappedMonoid m -> WrappedMonoid m -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall m. Eq m => WrappedMonoid m -> WrappedMonoid m -> Bool == :: WrappedMonoid m -> WrappedMonoid m -> Bool $c/= :: forall m. Eq m => WrappedMonoid m -> WrappedMonoid m -> Bool /= :: WrappedMonoid m -> WrappedMonoid m -> Bool Eq -- ^ @since 4.9.0.0,Eq (WrappedMonoid m) Eq (WrappedMonoid m) => (WrappedMonoid m -> WrappedMonoid m -> Ordering) -> (WrappedMonoid m -> WrappedMonoid m -> Bool) -> (WrappedMonoid m -> WrappedMonoid m -> Bool) -> (WrappedMonoid m -> WrappedMonoid m -> Bool) -> (WrappedMonoid m -> WrappedMonoid m -> Bool) -> (WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m) -> (WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m) -> Ord (WrappedMonoid m) WrappedMonoid m -> WrappedMonoid m -> Bool WrappedMonoid m -> WrappedMonoid m -> Ordering WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall m. Ord m => Eq (WrappedMonoid m) forall m. Ord m => WrappedMonoid m -> WrappedMonoid m -> Bool forall m. Ord m => WrappedMonoid m -> WrappedMonoid m -> Ordering forall m. Ord m => WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m $ccompare :: forall m. Ord m => WrappedMonoid m -> WrappedMonoid m -> Ordering compare :: WrappedMonoid m -> WrappedMonoid m -> Ordering $c< :: forall m. Ord m => WrappedMonoid m -> WrappedMonoid m -> Bool < :: WrappedMonoid m -> WrappedMonoid m -> Bool $c<= :: forall m. Ord m => WrappedMonoid m -> WrappedMonoid m -> Bool <= :: WrappedMonoid m -> WrappedMonoid m -> Bool $c> :: forall m. Ord m => WrappedMonoid m -> WrappedMonoid m -> Bool > :: WrappedMonoid m -> WrappedMonoid m -> Bool $c>= :: forall m. Ord m => WrappedMonoid m -> WrappedMonoid m -> Bool >= :: WrappedMonoid m -> WrappedMonoid m -> Bool $cmax :: forall m. Ord m => WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m max :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m $cmin :: forall m. Ord m => WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m min :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Ord -- ^ @since 4.9.0.0,Int -> WrappedMonoid m -> ShowS [WrappedMonoid m] -> ShowS WrappedMonoid m -> String (Int -> WrappedMonoid m -> ShowS) -> (WrappedMonoid m -> String) -> ([WrappedMonoid m] -> ShowS) -> Show (WrappedMonoid m) forall m. Show m => Int -> WrappedMonoid m -> ShowS forall m. Show m => [WrappedMonoid m] -> ShowS forall m. Show m => WrappedMonoid m -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall m. Show m => Int -> WrappedMonoid m -> ShowS showsPrec :: Int -> WrappedMonoid m -> ShowS $cshow :: forall m. Show m => WrappedMonoid m -> String show :: WrappedMonoid m -> String $cshowList :: forall m. Show m => [WrappedMonoid m] -> ShowS showList :: [WrappedMonoid m] -> ShowS Show -- ^ @since 4.9.0.0,ReadPrec [WrappedMonoid m] ReadPrec (WrappedMonoid m) Int -> ReadS (WrappedMonoid m) ReadS [WrappedMonoid m] (Int -> ReadS (WrappedMonoid m)) -> ReadS [WrappedMonoid m] -> ReadPrec (WrappedMonoid m) -> ReadPrec [WrappedMonoid m] -> Read (WrappedMonoid m) forall m. Read m => ReadPrec [WrappedMonoid m] forall m. Read m => ReadPrec (WrappedMonoid m) forall m. Read m => Int -> ReadS (WrappedMonoid m) forall m. Read m => ReadS [WrappedMonoid m] forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a $creadsPrec :: forall m. Read m => Int -> ReadS (WrappedMonoid m) readsPrec :: Int -> ReadS (WrappedMonoid m) $creadList :: forall m. Read m => ReadS [WrappedMonoid m] readList :: ReadS [WrappedMonoid m] $creadPrec :: forall m. Read m => ReadPrec (WrappedMonoid m) readPrec :: ReadPrec (WrappedMonoid m) $creadListPrec :: forall m. Read m => ReadPrec [WrappedMonoid m] readListPrec :: ReadPrec [WrappedMonoid m] Read -- ^ @since 4.9.0.0,Typeable (WrappedMonoid m) Typeable (WrappedMonoid m) => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> WrappedMonoid m -> c (WrappedMonoid m)) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (WrappedMonoid m)) -> (WrappedMonoid m -> Constr) -> (WrappedMonoid m -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (WrappedMonoid m))) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (WrappedMonoid m))) -> ((forall b. Data b => b -> b) -> WrappedMonoid m -> WrappedMonoid m) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r) -> (forall u. (forall d. Data d => d -> u) -> WrappedMonoid m -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> WrappedMonoid m -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m)) -> Data (WrappedMonoid m) WrappedMonoid m -> Constr WrappedMonoid m -> DataType (forall b. Data b => b -> b) -> WrappedMonoid m -> WrappedMonoid m forall m. Data m => Typeable (WrappedMonoid m) forall m. Data m => WrappedMonoid m -> Constr forall m. Data m => WrappedMonoid m -> DataType forall m. Data m => (forall b. Data b => b -> b) -> WrappedMonoid m -> WrappedMonoid m forall m u. Data m => Int -> (forall d. Data d => d -> u) -> WrappedMonoid m -> u forall m u. Data m => (forall d. Data d => d -> u) -> WrappedMonoid m -> [u] forall m r r'. Data m => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r forall m r r'. Data m => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r forall m (m :: * -> *). (Data m, Monad m) => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m) forall m (m :: * -> *). (Data m, MonadPlus m) => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m) forall m (c :: * -> *). Data m => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (WrappedMonoid m) forall m (c :: * -> *). Data m => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> WrappedMonoid m -> c (WrappedMonoid m) forall m (t :: * -> *) (c :: * -> *). (Data m, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (WrappedMonoid m)) forall m (t :: * -> * -> *) (c :: * -> *). (Data m, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (WrappedMonoid m)) forall a. Typeable a => (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> WrappedMonoid m -> u forall u. (forall d. Data d => d -> u) -> WrappedMonoid m -> [u] forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m) forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m) forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (WrappedMonoid m) forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> WrappedMonoid m -> c (WrappedMonoid m) forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (WrappedMonoid m)) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (WrappedMonoid m)) $cgfoldl :: forall m (c :: * -> *). Data m => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> WrappedMonoid m -> c (WrappedMonoid m) gfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> WrappedMonoid m -> c (WrappedMonoid m) $cgunfold :: forall m (c :: * -> *). Data m => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (WrappedMonoid m) gunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (WrappedMonoid m) $ctoConstr :: forall m. Data m => WrappedMonoid m -> Constr toConstr :: WrappedMonoid m -> Constr $cdataTypeOf :: forall m. Data m => WrappedMonoid m -> DataType dataTypeOf :: WrappedMonoid m -> DataType $cdataCast1 :: forall m (t :: * -> *) (c :: * -> *). (Data m, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (WrappedMonoid m)) dataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (WrappedMonoid m)) $cdataCast2 :: forall m (t :: * -> * -> *) (c :: * -> *). (Data m, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (WrappedMonoid m)) dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (WrappedMonoid m)) $cgmapT :: forall m. Data m => (forall b. Data b => b -> b) -> WrappedMonoid m -> WrappedMonoid m gmapT :: (forall b. Data b => b -> b) -> WrappedMonoid m -> WrappedMonoid m $cgmapQl :: forall m r r'. Data m => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r gmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r $cgmapQr :: forall m r r'. Data m => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r $cgmapQ :: forall m u. Data m => (forall d. Data d => d -> u) -> WrappedMonoid m -> [u] gmapQ :: forall u. (forall d. Data d => d -> u) -> WrappedMonoid m -> [u] $cgmapQi :: forall m u. Data m => Int -> (forall d. Data d => d -> u) -> WrappedMonoid m -> u gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> WrappedMonoid m -> u $cgmapM :: forall m (m :: * -> *). (Data m, Monad m) => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m) gmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m) $cgmapMp :: forall m (m :: * -> *). (Data m, MonadPlus m) => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m) gmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m) $cgmapMo :: forall m (m :: * -> *). (Data m, MonadPlus m) => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m) gmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> WrappedMonoid m -> m (WrappedMonoid m) Data -- ^ @since 4.9.0.0,(forall x. WrappedMonoid m -> Rep (WrappedMonoid m) x) -> (forall x. Rep (WrappedMonoid m) x -> WrappedMonoid m) -> Generic (WrappedMonoid m) forall x. Rep (WrappedMonoid m) x -> WrappedMonoid m forall x. WrappedMonoid m -> Rep (WrappedMonoid m) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall m x. Rep (WrappedMonoid m) x -> WrappedMonoid m forall m x. WrappedMonoid m -> Rep (WrappedMonoid m) x $cfrom :: forall m x. WrappedMonoid m -> Rep (WrappedMonoid m) x from :: forall x. WrappedMonoid m -> Rep (WrappedMonoid m) x $cto :: forall m x. Rep (WrappedMonoid m) x -> WrappedMonoid m to :: forall x. Rep (WrappedMonoid m) x -> WrappedMonoid m Generic -- ^ @since 4.9.0.0,(forall a. WrappedMonoid a -> Rep1 WrappedMonoid a) -> (forall a. Rep1 WrappedMonoid a -> WrappedMonoid a) -> Generic1 WrappedMonoid forall a. Rep1 WrappedMonoid a -> WrappedMonoid a forall a. WrappedMonoid a -> Rep1 WrappedMonoid a forall k (f :: k -> *). (forall (a :: k). f a -> Rep1 f a) -> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f $cfrom1 :: forall a. WrappedMonoid a -> Rep1 WrappedMonoid a from1 :: forall a. WrappedMonoid a -> Rep1 WrappedMonoid a $cto1 :: forall a. Rep1 WrappedMonoid a -> WrappedMonoid a to1 :: forall a. Rep1 WrappedMonoid a -> WrappedMonoid a Generic1 -- ^ @since 4.9.0.0)-- | @since 4.9.0.0instanceMonoid m =>Semigroup (WrappedMonoid m )where<> :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m (<>) =(m -> m -> m) -> WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m forall a b. Coercible a b => a -> b coerce (m -> m -> m forall a. Monoid a => a -> a -> a mappend ::m ->m ->m )-- | @since 4.9.0.0instanceMonoid m =>Monoid (WrappedMonoid m )wheremempty :: WrappedMonoid m mempty =m -> WrappedMonoid m forall m. m -> WrappedMonoid m WrapMonoid m forall a. Monoid a => a mempty -- This ensures that we use whatever mconcat is defined for the wrapped-- Monoid.mconcat :: [WrappedMonoid m] -> WrappedMonoid m mconcat =([m] -> m) -> [WrappedMonoid m] -> WrappedMonoid m forall a b. Coercible a b => a -> b coerce ([m] -> m forall a. Monoid a => [a] -> a mconcat ::[m ]->m )-- | @since 4.9.0.0instanceEnum a =>Enum (WrappedMonoid a )wheresucc :: WrappedMonoid a -> WrappedMonoid a succ (WrapMonoid a a )=a -> WrappedMonoid a forall m. m -> WrappedMonoid m WrapMonoid (a -> a forall a. Enum a => a -> a succ a a )pred :: WrappedMonoid a -> WrappedMonoid a pred (WrapMonoid a a )=a -> WrappedMonoid a forall m. m -> WrappedMonoid m WrapMonoid (a -> a forall a. Enum a => a -> a pred a a )toEnum :: Int -> WrappedMonoid a toEnum =a -> WrappedMonoid a forall m. m -> WrappedMonoid m WrapMonoid (a -> WrappedMonoid a) -> (Int -> a) -> Int -> WrappedMonoid a forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> a forall a. Enum a => Int -> a toEnum fromEnum :: WrappedMonoid a -> Int fromEnum =a -> Int forall a. Enum a => a -> Int fromEnum (a -> Int) -> (WrappedMonoid a -> a) -> WrappedMonoid a -> Int forall b c a. (b -> c) -> (a -> b) -> a -> c . WrappedMonoid a -> a forall m. WrappedMonoid m -> m unwrapMonoid enumFrom :: WrappedMonoid a -> [WrappedMonoid a] enumFrom (WrapMonoid a a )=a -> WrappedMonoid a forall m. m -> WrappedMonoid m WrapMonoid (a -> WrappedMonoid a) -> [a] -> [WrappedMonoid a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> [a] forall a. Enum a => a -> [a] enumFrom a a enumFromThen :: WrappedMonoid a -> WrappedMonoid a -> [WrappedMonoid a] enumFromThen (WrapMonoid a a )(WrapMonoid a b )=a -> WrappedMonoid a forall m. m -> WrappedMonoid m WrapMonoid (a -> WrappedMonoid a) -> [a] -> [WrappedMonoid a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> [a] forall a. Enum a => a -> a -> [a] enumFromThen a a a b enumFromTo :: WrappedMonoid a -> WrappedMonoid a -> [WrappedMonoid a] enumFromTo (WrapMonoid a a )(WrapMonoid a b )=a -> WrappedMonoid a forall m. m -> WrappedMonoid m WrapMonoid (a -> WrappedMonoid a) -> [a] -> [WrappedMonoid a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> [a] forall a. Enum a => a -> a -> [a] enumFromTo a a a b enumFromThenTo :: WrappedMonoid a -> WrappedMonoid a -> WrappedMonoid a -> [WrappedMonoid a] enumFromThenTo (WrapMonoid a a )(WrapMonoid a b )(WrapMonoid a c )=a -> WrappedMonoid a forall m. m -> WrappedMonoid m WrapMonoid (a -> WrappedMonoid a) -> [a] -> [WrappedMonoid a] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> a -> a -> [a] forall a. Enum a => a -> a -> a -> [a] enumFromThenTo a a a b a c -- | Repeat a value @n@ times.---- > mtimesDefault n a = a <> a <> ... <> a -- using <> (n-1) times---- In many cases, @'stimes' 0 a@ for a `Monoid` will produce `mempty`.-- However, there are situations when it cannot do so. In particular,-- the following situation is fairly common:---- @-- data T a = ...---- class Constraint1 a-- class Constraint1 a => Constraint2 a-- @---- @-- instance Constraint1 a => 'Semigroup' (T a)-- instance Constraint2 a => 'Monoid' (T a)-- @---- Since @Constraint1@ is insufficient to implement 'mempty',-- 'stimes' for @T a@ cannot do so.---- When working with such a type, or when working polymorphically with-- 'Semigroup' instances, @mtimesDefault@ should be used when the-- multiplier might be zero. It is implemented using 'stimes' when-- the multiplier is nonzero and 'mempty' when it is zero.---- ==== __Examples__---- >>> mtimesDefault 0 "bark"-- []---- >>> mtimesDefault 3 "meow"-- "meowmeowmeow"mtimesDefault ::(Integral b ,Monoid a )=>b ->a ->a mtimesDefault :: forall b a. (Integral b, Monoid a) => b -> a -> a mtimesDefault b n a x |b n b -> b -> Bool forall a. Eq a => a -> a -> Bool == b 0=a forall a. Monoid a => a mempty |Bool otherwise =b -> a -> a forall b. Integral b => b -> a -> a forall a b. (Semigroup a, Integral b) => b -> a -> a stimes b n a x