base-4.11.1.0: Basic libraries

Copyright (C) 2011-2015 Edward Kmett BSD-style (see the file LICENSE) libraries@haskell.org provisional portable Trustworthy Haskell2010

Data.Semigroup

Description

In mathematics, a semigroup is an algebraic structure consisting of a set together with an associative binary operation. A semigroup generalizes a monoid in that there might not exist an identity element. It also (originally) generalized a group (a monoid with all inverses) to a type where every element did not have to have an inverse, thus the name semigroup.

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: base-4.9.0.0

Synopsis

Documentation

class Semigroup a where Source #

The class of semigroups (types with an associative binary operation).

Instances should satisfy the associativity law:

• x <> (y <> z) = (x <> y) <> z

Since: base-4.9.0.0

Minimal complete definition

(<>)

Methods

(<>) :: a -> a -> a infixr 6 Source #

An associative operation.

sconcat :: NonEmpty a -> a Source #

Reduce a non-empty list with <>

The default definition should be sufficient, but this can be overridden for efficiency.

stimes :: Integral b => b -> a -> a Source #

Repeat a value n times.

Given that this works on a Semigroup it is allowed to fail if you request 0 or fewer repetitions, and the default definition will do so.

By making this a member of the class, idempotent semigroups and monoids can upgrade this to execute in O(1) by picking stimes = stimesIdempotent or stimes = stimesIdempotentMonoid respectively.

Instances
 Source # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methodsstimes :: Integral b => b -> Ordering -> Ordering Source # Source # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(<>) :: () -> () -> () Source #sconcat :: NonEmpty () -> () Source #stimes :: Integral b => b -> () -> () Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Any -> Any -> Any Source #stimes :: Integral b => b -> Any -> Any Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: All -> All -> All Source #stimes :: Integral b => b -> All -> All Source # Source # Since: base-4.10.0.0 Instance detailsDefined in GHC.Event.Internal Methodsstimes :: Integral b => b -> Lifetime -> Lifetime Source # Source # Since: base-4.10.0.0 Instance detailsDefined in GHC.Event.Internal Methodsstimes :: Integral b => b -> Event -> Event Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Void Methods(<>) :: Void -> Void -> Void Source #stimes :: Integral b => b -> Void -> Void Source # Semigroup [a] Source # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(<>) :: [a] -> [a] -> [a] Source #sconcat :: NonEmpty [a] -> [a] Source #stimes :: Integral b => b -> [a] -> [a] Source # Semigroup a => Semigroup (Maybe a) Source # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(<>) :: Maybe a -> Maybe a -> Maybe a Source #sconcat :: NonEmpty (Maybe a) -> Maybe a Source #stimes :: Integral b => b -> Maybe a -> Maybe a Source # Semigroup a => Semigroup (IO a) Source # Since: base-4.10.0.0 Instance detailsDefined in GHC.Base Methods(<>) :: IO a -> IO a -> IO a Source #sconcat :: NonEmpty (IO a) -> IO a Source #stimes :: Integral b => b -> IO a -> IO a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(<>) :: NonEmpty a -> NonEmpty a -> NonEmpty a Source #stimes :: Integral b => b -> NonEmpty a -> NonEmpty a Source # Semigroup a => Semigroup (Down a) Source # Since: base-4.11.0.0 Instance detailsDefined in Data.Ord Methods(<>) :: Down a -> Down a -> Down a Source #sconcat :: NonEmpty (Down a) -> Down a Source #stimes :: Integral b => b -> Down a -> Down a Source # Num a => Semigroup (Product a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Product a -> Product a -> Product a Source #sconcat :: NonEmpty (Product a) -> Product a Source #stimes :: Integral b => b -> Product a -> Product a Source # Num a => Semigroup (Sum a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Sum a -> Sum a -> Sum a Source #sconcat :: NonEmpty (Sum a) -> Sum a Source #stimes :: Integral b => b -> Sum a -> Sum a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Endo a -> Endo a -> Endo a Source #sconcat :: NonEmpty (Endo a) -> Endo a Source #stimes :: Integral b => b -> Endo a -> Endo a Source # Semigroup a => Semigroup (Dual a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Dual a -> Dual a -> Dual a Source #sconcat :: NonEmpty (Dual a) -> Dual a Source #stimes :: Integral b => b -> Dual a -> Dual a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Monoid Methods(<>) :: Last a -> Last a -> Last a Source #sconcat :: NonEmpty (Last a) -> Last a Source #stimes :: Integral b => b -> Last a -> Last a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Monoid Methods(<>) :: First a -> First a -> First a Source #sconcat :: NonEmpty (First a) -> First a Source #stimes :: Integral b => b -> First a -> First a Source # Semigroup a => Semigroup (Identity a) Source # Instance detailsDefined in Data.Functor.Identity Methods(<>) :: Identity a -> Identity a -> Identity a Source #stimes :: Integral b => b -> Identity a -> Identity a Source # Semigroup a => Semigroup (Option a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<>) :: Option a -> Option a -> Option a Source #sconcat :: NonEmpty (Option a) -> Option a Source #stimes :: Integral b => b -> Option a -> Option a Source # Monoid m => Semigroup (WrappedMonoid m) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsstimes :: Integral b => b -> WrappedMonoid m -> WrappedMonoid m Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<>) :: Last a -> Last a -> Last a Source #sconcat :: NonEmpty (Last a) -> Last a Source #stimes :: Integral b => b -> Last a -> Last a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<>) :: First a -> First a -> First a Source #sconcat :: NonEmpty (First a) -> First a Source #stimes :: Integral b => b -> First a -> First a Source # Ord a => Semigroup (Max a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<>) :: Max a -> Max a -> Max a Source #sconcat :: NonEmpty (Max a) -> Max a Source #stimes :: Integral b => b -> Max a -> Max a Source # Ord a => Semigroup (Min a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<>) :: Min a -> Min a -> Min a Source #sconcat :: NonEmpty (Min a) -> Min a Source #stimes :: Integral b => b -> Min a -> Min a Source # Semigroup b => Semigroup (a -> b) Source # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(<>) :: (a -> b) -> (a -> b) -> a -> b Source #sconcat :: NonEmpty (a -> b) -> a -> b Source #stimes :: Integral b0 => b0 -> (a -> b) -> a -> b Source # Semigroup (Either a b) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Either Methods(<>) :: Either a b -> Either a b -> Either a b Source #sconcat :: NonEmpty (Either a b) -> Either a b Source #stimes :: Integral b0 => b0 -> Either a b -> Either a b Source # (Semigroup a, Semigroup b) => Semigroup (a, b) Source # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(<>) :: (a, b) -> (a, b) -> (a, b) Source #sconcat :: NonEmpty (a, b) -> (a, b) Source #stimes :: Integral b0 => b0 -> (a, b) -> (a, b) Source # Semigroup a => Semigroup (ST s a) Source # Since: base-4.11.0.0 Instance detailsDefined in GHC.ST Methods(<>) :: ST s a -> ST s a -> ST s a Source #sconcat :: NonEmpty (ST s a) -> ST s a Source #stimes :: Integral b => b -> ST s a -> ST s a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Proxy Methods(<>) :: Proxy s -> Proxy s -> Proxy s Source #sconcat :: NonEmpty (Proxy s) -> Proxy s Source #stimes :: Integral b => b -> Proxy s -> Proxy s Source # (Semigroup a, Semigroup b, Semigroup c) => Semigroup (a, b, c) Source # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(<>) :: (a, b, c) -> (a, b, c) -> (a, b, c) Source #sconcat :: NonEmpty (a, b, c) -> (a, b, c) Source #stimes :: Integral b0 => b0 -> (a, b, c) -> (a, b, c) Source # Alternative f => Semigroup (Alt f a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Alt f a -> Alt f a -> Alt f a Source #sconcat :: NonEmpty (Alt f a) -> Alt f a Source #stimes :: Integral b => b -> Alt f a -> Alt f a Source # Semigroup a => Semigroup (Const a b) Source # Instance detailsDefined in Data.Functor.Const Methods(<>) :: Const a b -> Const a b -> Const a b Source #sconcat :: NonEmpty (Const a b) -> Const a b Source #stimes :: Integral b0 => b0 -> Const a b -> Const a b Source # (Semigroup a, Semigroup b, Semigroup c, Semigroup d) => Semigroup (a, b, c, d) Source # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(<>) :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Source #sconcat :: NonEmpty (a, b, c, d) -> (a, b, c, d) Source #stimes :: Integral b0 => b0 -> (a, b, c, d) -> (a, b, c, d) Source # (Semigroup a, Semigroup b, Semigroup c, Semigroup d, Semigroup e) => Semigroup (a, b, c, d, e) Source # Since: base-4.9.0.0 Instance detailsDefined in GHC.Base Methods(<>) :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Source #sconcat :: NonEmpty (a, b, c, d, e) -> (a, b, c, d, e) Source #stimes :: Integral b0 => b0 -> (a, b, c, d, e) -> (a, b, c, d, e) Source #

stimesMonoid :: (Integral b, Monoid a) => b -> a -> a Source #

This is a valid definition of stimes for a Monoid.

Unlike the default definition of stimes, it is defined for 0 and so it should be preferred where possible.

stimesIdempotent :: Integral b => b -> a -> a Source #

This is a valid definition of stimes for an idempotent Semigroup.

When x <> x = x, this definition should be preferred, because it works in O(1) rather than O(log n).

stimesIdempotentMonoid :: (Integral b, Monoid a) => b -> a -> a Source #

This is a valid definition of stimes for an idempotent Monoid.

When mappend x x = x, this definition should be preferred, because it works in O(1) rather than O(log n)

mtimesDefault :: (Integral b, Monoid a) => b -> a -> a Source #

Repeat a value n times.

mtimesDefault n a = a <> a <> ... <> a  -- using <> (n-1) times

Implemented using stimes and mempty.

This is a suitable definition for an mtimes member of Monoid.

Semigroups

newtype Min a Source #

Constructors

 Min FieldsgetMin :: a
Instances
 Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(>>=) :: Min a -> (a -> Min b) -> Min b Source #(>>) :: Min a -> Min b -> Min b Source #return :: a -> Min a Source #fail :: String -> Min a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfmap :: (a -> b) -> Min a -> Min b Source #(<$) :: a -> Min b -> Min a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsmfix :: (a -> Min a) -> Min a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodspure :: a -> Min a Source #(<*>) :: Min (a -> b) -> Min a -> Min b Source #liftA2 :: (a -> b -> c) -> Min a -> Min b -> Min c Source #(*>) :: Min a -> Min b -> Min b Source #(<*) :: Min a -> Min b -> Min a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfold :: Monoid m => Min m -> m Source #foldMap :: Monoid m => (a -> m) -> Min a -> m Source #foldr :: (a -> b -> b) -> b -> Min a -> b Source #foldr' :: (a -> b -> b) -> b -> Min a -> b Source #foldl :: (b -> a -> b) -> b -> Min a -> b Source #foldl' :: (b -> a -> b) -> b -> Min a -> b Source #foldr1 :: (a -> a -> a) -> Min a -> a Source #foldl1 :: (a -> a -> a) -> Min a -> a Source #toList :: Min a -> [a] Source #null :: Min a -> Bool Source #length :: Min a -> Int Source #elem :: Eq a => a -> Min a -> Bool Source #maximum :: Ord a => Min a -> a Source #minimum :: Ord a => Min a -> a Source #sum :: Num a => Min a -> a Source #product :: Num a => Min a -> a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodstraverse :: Applicative f => (a -> f b) -> Min a -> f (Min b) Source #sequenceA :: Applicative f => Min (f a) -> f (Min a) Source #mapM :: Monad m => (a -> m b) -> Min a -> m (Min b) Source #sequence :: Monad m => Min (m a) -> m (Min a) Source # Bounded a => Bounded (Min a) Source # Instance detailsDefined in Data.Semigroup Methods Enum a => Enum (Min a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodssucc :: Min a -> Min a Source #pred :: Min a -> Min a Source #toEnum :: Int -> Min a Source #fromEnum :: Min a -> Int Source #enumFrom :: Min a -> [Min a] Source #enumFromThen :: Min a -> Min a -> [Min a] Source #enumFromTo :: Min a -> Min a -> [Min a] Source #enumFromThenTo :: Min a -> Min a -> Min a -> [Min a] Source # Eq a => Eq (Min a) Source # Instance detailsDefined in Data.Semigroup Methods(==) :: Min a -> Min a -> Bool #(/=) :: Min a -> Min a -> Bool # Data a => Data (Min a) Source # Instance detailsDefined in Data.Semigroup Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Min a -> c (Min a) Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Min a) Source #toConstr :: Min a -> Constr Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Min a)) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Min a)) Source #gmapT :: (forall b. Data b => b -> b) -> Min a -> Min a Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r Source #gmapQ :: (forall d. Data d => d -> u) -> Min a -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> Min a -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) Source # Num a => Num (Min a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(+) :: Min a -> Min a -> Min a Source #(-) :: Min a -> Min a -> Min a Source #(*) :: Min a -> Min a -> Min a Source #negate :: Min a -> Min a Source #abs :: Min a -> Min a Source #signum :: Min a -> Min a Source # Ord a => Ord (Min a) Source # Instance detailsDefined in Data.Semigroup Methodscompare :: 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 #max :: Min a -> Min a -> Min a #min :: Min a -> Min a -> Min a # Read a => Read (Min a) Source # Instance detailsDefined in Data.Semigroup MethodsreadsPrec :: Int -> ReadS (Min a) Source # Show a => Show (Min a) Source # Instance detailsDefined in Data.Semigroup MethodsshowsPrec :: Int -> Min a -> ShowS Source #show :: Min a -> String Source #showList :: [Min a] -> ShowS Source # Generic (Min a) Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep (Min a) :: * -> * Source # Methodsfrom :: Min a -> Rep (Min a) x Source #to :: Rep (Min a) x -> Min a Source # Ord a => Semigroup (Min a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<>) :: Min a -> Min a -> Min a Source #sconcat :: NonEmpty (Min a) -> Min a Source #stimes :: Integral b => b -> Min a -> Min a Source # (Ord a, Bounded a) => Monoid (Min a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsmappend :: Min a -> Min a -> Min a Source #mconcat :: [Min a] -> Min a Source # Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep1 Min :: k -> * Source # Methodsfrom1 :: Min a -> Rep1 Min a Source #to1 :: Rep1 Min a -> Min a Source # type Rep (Min a) Source # Instance detailsDefined in Data.Semigroup type Rep (Min a) = D1 (MetaData "Min" "Data.Semigroup" "base" True) (C1 (MetaCons "Min" PrefixI True) (S1 (MetaSel (Just "getMin") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))) type Rep1 Min Source # Instance detailsDefined in Data.Semigroup type Rep1 Min = D1 (MetaData "Min" "Data.Semigroup" "base" True) (C1 (MetaCons "Min" PrefixI True) (S1 (MetaSel (Just "getMin") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1)) newtype Max a Source # Constructors  Max FieldsgetMax :: a Instances  Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(>>=) :: Max a -> (a -> Max b) -> Max b Source #(>>) :: Max a -> Max b -> Max b Source #return :: a -> Max a Source #fail :: String -> Max a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfmap :: (a -> b) -> Max a -> Max b Source #(<$) :: a -> Max b -> Max a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsmfix :: (a -> Max a) -> Max a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodspure :: a -> Max a Source #(<*>) :: Max (a -> b) -> Max a -> Max b Source #liftA2 :: (a -> b -> c) -> Max a -> Max b -> Max c Source #(*>) :: Max a -> Max b -> Max b Source #(<*) :: Max a -> Max b -> Max a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfold :: Monoid m => Max m -> m Source #foldMap :: Monoid m => (a -> m) -> Max a -> m Source #foldr :: (a -> b -> b) -> b -> Max a -> b Source #foldr' :: (a -> b -> b) -> b -> Max a -> b Source #foldl :: (b -> a -> b) -> b -> Max a -> b Source #foldl' :: (b -> a -> b) -> b -> Max a -> b Source #foldr1 :: (a -> a -> a) -> Max a -> a Source #foldl1 :: (a -> a -> a) -> Max a -> a Source #toList :: Max a -> [a] Source #null :: Max a -> Bool Source #length :: Max a -> Int Source #elem :: Eq a => a -> Max a -> Bool Source #maximum :: Ord a => Max a -> a Source #minimum :: Ord a => Max a -> a Source #sum :: Num a => Max a -> a Source #product :: Num a => Max a -> a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodstraverse :: Applicative f => (a -> f b) -> Max a -> f (Max b) Source #sequenceA :: Applicative f => Max (f a) -> f (Max a) Source #mapM :: Monad m => (a -> m b) -> Max a -> m (Max b) Source #sequence :: Monad m => Max (m a) -> m (Max a) Source # Bounded a => Bounded (Max a) Source # Instance detailsDefined in Data.Semigroup Methods Enum a => Enum (Max a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodssucc :: Max a -> Max a Source #pred :: Max a -> Max a Source #toEnum :: Int -> Max a Source #fromEnum :: Max a -> Int Source #enumFrom :: Max a -> [Max a] Source #enumFromThen :: Max a -> Max a -> [Max a] Source #enumFromTo :: Max a -> Max a -> [Max a] Source #enumFromThenTo :: Max a -> Max a -> Max a -> [Max a] Source # Eq a => Eq (Max a) Source # Instance detailsDefined in Data.Semigroup Methods(==) :: Max a -> Max a -> Bool #(/=) :: Max a -> Max a -> Bool # Data a => Data (Max a) Source # Instance detailsDefined in Data.Semigroup Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Max a -> c (Max a) Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Max a) Source #toConstr :: Max a -> Constr Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Max a)) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Max a)) Source #gmapT :: (forall b. Data b => b -> b) -> Max a -> Max a Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r Source #gmapQ :: (forall d. Data d => d -> u) -> Max a -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> Max a -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) Source # Num a => Num (Max a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(+) :: Max a -> Max a -> Max a Source #(-) :: Max a -> Max a -> Max a Source #(*) :: Max a -> Max a -> Max a Source #negate :: Max a -> Max a Source #abs :: Max a -> Max a Source #signum :: Max a -> Max a Source # Ord a => Ord (Max a) Source # Instance detailsDefined in Data.Semigroup Methodscompare :: 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 :: Max a -> Max a -> Max a #min :: Max a -> Max a -> Max a # Read a => Read (Max a) Source # Instance detailsDefined in Data.Semigroup MethodsreadsPrec :: Int -> ReadS (Max a) Source # Show a => Show (Max a) Source # Instance detailsDefined in Data.Semigroup MethodsshowsPrec :: Int -> Max a -> ShowS Source #show :: Max a -> String Source #showList :: [Max a] -> ShowS Source # Generic (Max a) Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep (Max a) :: * -> * Source # Methodsfrom :: Max a -> Rep (Max a) x Source #to :: Rep (Max a) x -> Max a Source # Ord a => Semigroup (Max a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<>) :: Max a -> Max a -> Max a Source #sconcat :: NonEmpty (Max a) -> Max a Source #stimes :: Integral b => b -> Max a -> Max a Source # (Ord a, Bounded a) => Monoid (Max a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsmappend :: Max a -> Max a -> Max a Source #mconcat :: [Max a] -> Max a Source # Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep1 Max :: k -> * Source # Methodsfrom1 :: Max a -> Rep1 Max a Source #to1 :: Rep1 Max a -> Max a Source # type Rep (Max a) Source # Instance detailsDefined in Data.Semigroup type Rep (Max a) = D1 (MetaData "Max" "Data.Semigroup" "base" True) (C1 (MetaCons "Max" PrefixI True) (S1 (MetaSel (Just "getMax") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))) type Rep1 Max Source # Instance detailsDefined in Data.Semigroup type Rep1 Max = D1 (MetaData "Max" "Data.Semigroup" "base" True) (C1 (MetaCons "Max" PrefixI True) (S1 (MetaSel (Just "getMax") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))

newtype First a Source #

Use Option (First a) to get the behavior of First from Data.Monoid.

Constructors

 First FieldsgetFirst :: a
Instances
 Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(>>=) :: First a -> (a -> First b) -> First b Source #(>>) :: First a -> First b -> First b Source #return :: a -> First a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfmap :: (a -> b) -> First a -> First b Source #(<$) :: a -> First b -> First a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsmfix :: (a -> First a) -> First a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodspure :: a -> First a Source #(<*>) :: First (a -> b) -> First a -> First b Source #liftA2 :: (a -> b -> c) -> First a -> First b -> First c Source #(*>) :: First a -> First b -> First b Source #(<*) :: First a -> First b -> First a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfold :: Monoid m => First m -> m Source #foldMap :: Monoid m => (a -> m) -> First a -> m Source #foldr :: (a -> b -> b) -> b -> First a -> b Source #foldr' :: (a -> b -> b) -> b -> First a -> b Source #foldl :: (b -> a -> b) -> b -> First a -> b Source #foldl' :: (b -> a -> b) -> b -> First a -> b Source #foldr1 :: (a -> a -> a) -> First a -> a Source #foldl1 :: (a -> a -> a) -> First a -> a Source #toList :: First a -> [a] Source #null :: First a -> Bool Source #length :: First a -> Int Source #elem :: Eq a => a -> First a -> Bool Source #maximum :: Ord a => First a -> a Source #minimum :: Ord a => First a -> a Source #sum :: Num a => First a -> a Source #product :: Num a => First a -> a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodstraverse :: Applicative f => (a -> f b) -> First a -> f (First b) Source #sequenceA :: Applicative f => First (f a) -> f (First a) Source #mapM :: Monad m => (a -> m b) -> First a -> m (First b) Source #sequence :: Monad m => First (m a) -> m (First a) Source # Bounded a => Bounded (First a) Source # Instance detailsDefined in Data.Semigroup Methods Enum a => Enum (First a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodssucc :: First a -> First a Source #pred :: First a -> First a Source #fromEnum :: First a -> Int Source #enumFrom :: First a -> [First a] Source #enumFromThen :: First a -> First a -> [First a] Source #enumFromTo :: First a -> First a -> [First a] Source #enumFromThenTo :: First a -> First a -> First a -> [First a] Source # Eq a => Eq (First a) Source # Instance detailsDefined in Data.Semigroup Methods(==) :: First a -> First a -> Bool #(/=) :: First a -> First a -> Bool # Data a => Data (First a) Source # Instance detailsDefined in Data.Semigroup Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> First a -> c (First a) Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (First a) Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (First a)) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (First a)) Source #gmapT :: (forall b. Data b => b -> b) -> First a -> First a Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> First a -> r Source #gmapQ :: (forall d. Data d => d -> u) -> First a -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> First a -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> First a -> m (First a) Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a) Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> First a -> m (First a) Source # Ord a => Ord (First a) Source # Instance detailsDefined in Data.Semigroup Methodscompare :: 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 #max :: First a -> First a -> First a #min :: First a -> First a -> First a # Read a => Read (First a) Source # Instance detailsDefined in Data.Semigroup Methods Show a => Show (First a) Source # Instance detailsDefined in Data.Semigroup MethodsshowsPrec :: Int -> First a -> ShowS Source #show :: First a -> String Source #showList :: [First a] -> ShowS Source # Generic (First a) Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep (First a) :: * -> * Source # Methodsfrom :: First a -> Rep (First a) x Source #to :: Rep (First a) x -> First a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<>) :: First a -> First a -> First a Source #sconcat :: NonEmpty (First a) -> First a Source #stimes :: Integral b => b -> First a -> First a Source # Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep1 First :: k -> * Source # Methodsfrom1 :: First a -> Rep1 First a Source #to1 :: Rep1 First a -> First a Source # type Rep (First a) Source # Instance detailsDefined in Data.Semigroup type Rep (First a) = D1 (MetaData "First" "Data.Semigroup" "base" True) (C1 (MetaCons "First" PrefixI True) (S1 (MetaSel (Just "getFirst") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))) type Rep1 First Source # Instance detailsDefined in Data.Semigroup type Rep1 First = D1 (MetaData "First" "Data.Semigroup" "base" True) (C1 (MetaCons "First" PrefixI True) (S1 (MetaSel (Just "getFirst") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1)) newtype Last a Source # Use Option (Last a) to get the behavior of Last from Data.Monoid Constructors  Last FieldsgetLast :: a Instances  Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(>>=) :: Last a -> (a -> Last b) -> Last b Source #(>>) :: Last a -> Last b -> Last b Source #return :: a -> Last a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfmap :: (a -> b) -> Last a -> Last b Source #(<$) :: a -> Last b -> Last a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsmfix :: (a -> Last a) -> Last a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodspure :: a -> Last a Source #(<*>) :: Last (a -> b) -> Last a -> Last b Source #liftA2 :: (a -> b -> c) -> Last a -> Last b -> Last c Source #(*>) :: Last a -> Last b -> Last b Source #(<*) :: Last a -> Last b -> Last a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfold :: Monoid m => Last m -> m Source #foldMap :: Monoid m => (a -> m) -> Last a -> m Source #foldr :: (a -> b -> b) -> b -> Last a -> b Source #foldr' :: (a -> b -> b) -> b -> Last a -> b Source #foldl :: (b -> a -> b) -> b -> Last a -> b Source #foldl' :: (b -> a -> b) -> b -> Last a -> b Source #foldr1 :: (a -> a -> a) -> Last a -> a Source #foldl1 :: (a -> a -> a) -> Last a -> a Source #toList :: Last a -> [a] Source #null :: Last a -> Bool Source #length :: Last a -> Int Source #elem :: Eq a => a -> Last a -> Bool Source #maximum :: Ord a => Last a -> a Source #minimum :: Ord a => Last a -> a Source #sum :: Num a => Last a -> a Source #product :: Num a => Last a -> a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodstraverse :: Applicative f => (a -> f b) -> Last a -> f (Last b) Source #sequenceA :: Applicative f => Last (f a) -> f (Last a) Source #mapM :: Monad m => (a -> m b) -> Last a -> m (Last b) Source #sequence :: Monad m => Last (m a) -> m (Last a) Source # Bounded a => Bounded (Last a) Source # Instance detailsDefined in Data.Semigroup Methods Enum a => Enum (Last a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodssucc :: Last a -> Last a Source #pred :: Last a -> Last a Source #toEnum :: Int -> Last a Source #fromEnum :: Last a -> Int Source #enumFrom :: Last a -> [Last a] Source #enumFromThen :: Last a -> Last a -> [Last a] Source #enumFromTo :: Last a -> Last a -> [Last a] Source #enumFromThenTo :: Last a -> Last a -> Last a -> [Last a] Source # Eq a => Eq (Last a) Source # Instance detailsDefined in Data.Semigroup Methods(==) :: Last a -> Last a -> Bool #(/=) :: Last a -> Last a -> Bool # Data a => Data (Last a) Source # Instance detailsDefined in Data.Semigroup Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Last a -> c (Last a) Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Last a) Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Last a)) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Last a)) Source #gmapT :: (forall b. Data b => b -> b) -> Last a -> Last a Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Last a -> r Source #gmapQ :: (forall d. Data d => d -> u) -> Last a -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> Last a -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Last a -> m (Last a) Source # Ord a => Ord (Last a) Source # Instance detailsDefined in Data.Semigroup Methodscompare :: 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 #max :: Last a -> Last a -> Last a #min :: Last a -> Last a -> Last a # Read a => Read (Last a) Source # Instance detailsDefined in Data.Semigroup MethodsreadsPrec :: Int -> ReadS (Last a) Source # Show a => Show (Last a) Source # Instance detailsDefined in Data.Semigroup MethodsshowsPrec :: Int -> Last a -> ShowS Source #show :: Last a -> String Source #showList :: [Last a] -> ShowS Source # Generic (Last a) Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep (Last a) :: * -> * Source # Methodsfrom :: Last a -> Rep (Last a) x Source #to :: Rep (Last a) x -> Last a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<>) :: Last a -> Last a -> Last a Source #sconcat :: NonEmpty (Last a) -> Last a Source #stimes :: Integral b => b -> Last a -> Last a Source # Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep1 Last :: k -> * Source # Methodsfrom1 :: Last a -> Rep1 Last a Source #to1 :: Rep1 Last a -> Last a Source # type Rep (Last a) Source # Instance detailsDefined in Data.Semigroup type Rep (Last a) = D1 (MetaData "Last" "Data.Semigroup" "base" True) (C1 (MetaCons "Last" PrefixI True) (S1 (MetaSel (Just "getLast") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))) type Rep1 Last Source # Instance detailsDefined in Data.Semigroup type Rep1 Last = D1 (MetaData "Last" "Data.Semigroup" "base" True) (C1 (MetaCons "Last" PrefixI True) (S1 (MetaSel (Just "getLast") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))

newtype WrappedMonoid m Source #

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.

Constructors

 WrapMonoid FieldsunwrapMonoid :: m
Instances
 Bounded m => Bounded (WrappedMonoid m) Source # Instance detailsDefined in Data.Semigroup Methods Enum a => Enum (WrappedMonoid a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup MethodsenumFromTo :: WrappedMonoid a -> WrappedMonoid a -> [WrappedMonoid a] Source # Eq m => Eq (WrappedMonoid m) Source # Instance detailsDefined in Data.Semigroup Methods(==) :: WrappedMonoid m -> WrappedMonoid m -> Bool #(/=) :: WrappedMonoid m -> WrappedMonoid m -> Bool # Data m => Data (WrappedMonoid m) Source # Instance detailsDefined in Data.Semigroup Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> WrappedMonoid m -> c (WrappedMonoid m) Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (WrappedMonoid m) Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (WrappedMonoid m)) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (WrappedMonoid m)) Source #gmapT :: (forall b. Data b => b -> b) -> WrappedMonoid m -> WrappedMonoid m Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> WrappedMonoid m -> r Source #gmapQ :: (forall d. Data d => d -> u) -> WrappedMonoid m -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> WrappedMonoid m -> u Source #gmapM :: Monad m0 => (forall d. Data d => d -> m0 d) -> WrappedMonoid m -> m0 (WrappedMonoid m) Source #gmapMp :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> WrappedMonoid m -> m0 (WrappedMonoid m) Source #gmapMo :: MonadPlus m0 => (forall d. Data d => d -> m0 d) -> WrappedMonoid m -> m0 (WrappedMonoid m) Source # Ord m => Ord (WrappedMonoid m) Source # Instance detailsDefined in Data.Semigroup Methods(<) :: WrappedMonoid m -> WrappedMonoid m -> Bool #(<=) :: WrappedMonoid m -> WrappedMonoid m -> Bool #(>) :: WrappedMonoid m -> WrappedMonoid m -> Bool #(>=) :: WrappedMonoid m -> WrappedMonoid m -> Bool #max :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m #min :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m # Read m => Read (WrappedMonoid m) Source # Instance detailsDefined in Data.Semigroup Methods Show m => Show (WrappedMonoid m) Source # Instance detailsDefined in Data.Semigroup MethodsshowList :: [WrappedMonoid m] -> ShowS Source # Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep (WrappedMonoid m) :: * -> * Source # Methodsfrom :: WrappedMonoid m -> Rep (WrappedMonoid m) x Source #to :: Rep (WrappedMonoid m) x -> WrappedMonoid m Source # Monoid m => Semigroup (WrappedMonoid m) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsstimes :: Integral b => b -> WrappedMonoid m -> WrappedMonoid m Source # Monoid m => Monoid (WrappedMonoid m) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsmconcat :: [WrappedMonoid m] -> WrappedMonoid m Source # Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep1 WrappedMonoid :: k -> * Source # Methods type Rep (WrappedMonoid m) Source # Instance detailsDefined in Data.Semigroup type Rep (WrappedMonoid m) = D1 (MetaData "WrappedMonoid" "Data.Semigroup" "base" True) (C1 (MetaCons "WrapMonoid" PrefixI True) (S1 (MetaSel (Just "unwrapMonoid") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 m))) Source # Instance detailsDefined in Data.Semigroup type Rep1 WrappedMonoid = D1 (MetaData "WrappedMonoid" "Data.Semigroup" "base" True) (C1 (MetaCons "WrapMonoid" PrefixI True) (S1 (MetaSel (Just "unwrapMonoid") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))

Re-exported monoids from Data.Monoid

newtype Dual a Source #

The dual of a Monoid, obtained by swapping the arguments of mappend.

>>> getDual (mappend (Dual "Hello") (Dual "World"))
"WorldHello"


Constructors

 Dual FieldsgetDual :: a
Instances
 Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(>>=) :: Dual a -> (a -> Dual b) -> Dual b Source #(>>) :: Dual a -> Dual b -> Dual b Source #return :: a -> Dual a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methodsfmap :: (a -> b) -> Dual a -> Dual b Source #(<$) :: a -> Dual b -> Dual a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Control.Monad.Fix Methodsmfix :: (a -> Dual a) -> Dual a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methodspure :: a -> Dual a Source #(<*>) :: Dual (a -> b) -> Dual a -> Dual b Source #liftA2 :: (a -> b -> c) -> Dual a -> Dual b -> Dual c Source #(*>) :: Dual a -> Dual b -> Dual b Source #(<*) :: Dual a -> Dual b -> Dual a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Foldable Methodsfold :: Monoid m => Dual m -> m Source #foldMap :: Monoid m => (a -> m) -> Dual a -> m Source #foldr :: (a -> b -> b) -> b -> Dual a -> b Source #foldr' :: (a -> b -> b) -> b -> Dual a -> b Source #foldl :: (b -> a -> b) -> b -> Dual a -> b Source #foldl' :: (b -> a -> b) -> b -> Dual a -> b Source #foldr1 :: (a -> a -> a) -> Dual a -> a Source #foldl1 :: (a -> a -> a) -> Dual a -> a Source #toList :: Dual a -> [a] Source #null :: Dual a -> Bool Source #length :: Dual a -> Int Source #elem :: Eq a => a -> Dual a -> Bool Source #maximum :: Ord a => Dual a -> a Source #minimum :: Ord a => Dual a -> a Source #sum :: Num a => Dual a -> a Source #product :: Num a => Dual a -> a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Traversable Methodstraverse :: Applicative f => (a -> f b) -> Dual a -> f (Dual b) Source #sequenceA :: Applicative f => Dual (f a) -> f (Dual a) Source #mapM :: Monad m => (a -> m b) -> Dual a -> m (Dual b) Source #sequence :: Monad m => Dual (m a) -> m (Dual a) Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Control.Monad.Zip Methodsmzip :: Dual a -> Dual b -> Dual (a, b) Source #mzipWith :: (a -> b -> c) -> Dual a -> Dual b -> Dual c Source #munzip :: Dual (a, b) -> (Dual a, Dual b) Source # Bounded a => Bounded (Dual a) Source # Instance detailsDefined in Data.Semigroup.Internal Methods Eq a => Eq (Dual a) Source # Instance detailsDefined in Data.Semigroup.Internal Methods(==) :: Dual a -> Dual a -> Bool #(/=) :: Dual a -> Dual a -> Bool # Data a => Data (Dual a) Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Data Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Dual a -> c (Dual a) Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Dual a) Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Dual a)) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Dual a)) Source #gmapT :: (forall b. Data b => b -> b) -> Dual a -> Dual a Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Dual a -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Dual a -> r Source #gmapQ :: (forall d. Data d => d -> u) -> Dual a -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> Dual a -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Dual a -> m (Dual a) Source # Ord a => Ord (Dual a) Source # Instance detailsDefined in Data.Semigroup.Internal Methodscompare :: Dual a -> Dual a -> Ordering #(<) :: Dual a -> Dual a -> Bool #(<=) :: Dual a -> Dual a -> Bool #(>) :: Dual a -> Dual a -> Bool #(>=) :: Dual a -> Dual a -> Bool #max :: Dual a -> Dual a -> Dual a #min :: Dual a -> Dual a -> Dual a # Read a => Read (Dual a) Source # Instance detailsDefined in Data.Semigroup.Internal MethodsreadsPrec :: Int -> ReadS (Dual a) Source # Show a => Show (Dual a) Source # Instance detailsDefined in Data.Semigroup.Internal MethodsshowsPrec :: Int -> Dual a -> ShowS Source #show :: Dual a -> String Source #showList :: [Dual a] -> ShowS Source # Generic (Dual a) Source # Instance detailsDefined in Data.Semigroup.Internal Associated Typestype Rep (Dual a) :: * -> * Source # Methodsfrom :: Dual a -> Rep (Dual a) x Source #to :: Rep (Dual a) x -> Dual a Source # Semigroup a => Semigroup (Dual a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Dual a -> Dual a -> Dual a Source #sconcat :: NonEmpty (Dual a) -> Dual a Source #stimes :: Integral b => b -> Dual a -> Dual a Source # Monoid a => Monoid (Dual a) Source # Since: base-2.1 Instance detailsDefined in Data.Semigroup.Internal Methodsmappend :: Dual a -> Dual a -> Dual a Source #mconcat :: [Dual a] -> Dual a Source # Source # Instance detailsDefined in Data.Semigroup.Internal Associated Typestype Rep1 Dual :: k -> * Source # Methodsfrom1 :: Dual a -> Rep1 Dual a Source #to1 :: Rep1 Dual a -> Dual a Source # type Rep (Dual a) Source # Instance detailsDefined in Data.Semigroup.Internal type Rep (Dual a) = D1 (MetaData "Dual" "Data.Semigroup.Internal" "base" True) (C1 (MetaCons "Dual" PrefixI True) (S1 (MetaSel (Just "getDual") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))) type Rep1 Dual Source # Instance detailsDefined in Data.Semigroup.Internal type Rep1 Dual = D1 (MetaData "Dual" "Data.Semigroup.Internal" "base" True) (C1 (MetaCons "Dual" PrefixI True) (S1 (MetaSel (Just "getDual") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1)) newtype Endo a Source # The monoid of endomorphisms under composition. >>> let computation = Endo ("Hello, " ++) <> Endo (++ "!") >>> appEndo computation "Haskell" "Hello, Haskell!"  Constructors  Endo FieldsappEndo :: a -> a Instances  Generic (Endo a) Source # Instance detailsDefined in Data.Semigroup.Internal Associated Typestype Rep (Endo a) :: * -> * Source # Methodsfrom :: Endo a -> Rep (Endo a) x Source #to :: Rep (Endo a) x -> Endo a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Endo a -> Endo a -> Endo a Source #sconcat :: NonEmpty (Endo a) -> Endo a Source #stimes :: Integral b => b -> Endo a -> Endo a Source # Monoid (Endo a) Source # Since: base-2.1 Instance detailsDefined in Data.Semigroup.Internal Methodsmappend :: Endo a -> Endo a -> Endo a Source #mconcat :: [Endo a] -> Endo a Source # type Rep (Endo a) Source # Instance detailsDefined in Data.Semigroup.Internal type Rep (Endo a) = D1 (MetaData "Endo" "Data.Semigroup.Internal" "base" True) (C1 (MetaCons "Endo" PrefixI True) (S1 (MetaSel (Just "appEndo") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (a -> a)))) newtype All Source # Boolean monoid under conjunction (&&). >>> getAll (All True <> mempty <> All False) False  >>> getAll (mconcat (map (\x -> All (even x)) [2,4,6,7,8])) False  Constructors  All FieldsgetAll :: Bool Instances  Source # Instance detailsDefined in Data.Semigroup.Internal Methods Source # Instance detailsDefined in Data.Semigroup.Internal Methods(==) :: All -> All -> Bool #(/=) :: All -> All -> Bool # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Data Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> All -> c All Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c All Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c All) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c All) Source #gmapT :: (forall b. Data b => b -> b) -> All -> All Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> All -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> All -> r Source #gmapQ :: (forall d. Data d => d -> u) -> All -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> All -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> All -> m All Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> All -> m All Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> All -> m All Source # Source # Instance detailsDefined in Data.Semigroup.Internal Methodscompare :: All -> All -> Ordering #(<) :: All -> All -> Bool #(<=) :: All -> All -> Bool #(>) :: All -> All -> Bool #(>=) :: All -> All -> Bool #max :: All -> All -> All #min :: All -> All -> All # Source # Instance detailsDefined in Data.Semigroup.Internal Methods Source # Instance detailsDefined in Data.Semigroup.Internal MethodsshowList :: [All] -> ShowS Source # Source # Instance detailsDefined in Data.Semigroup.Internal Associated Typestype Rep All :: * -> * Source # Methodsfrom :: All -> Rep All x Source #to :: Rep All x -> All Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: All -> All -> All Source #stimes :: Integral b => b -> All -> All Source # Source # Since: base-2.1 Instance detailsDefined in Data.Semigroup.Internal Methodsmappend :: All -> All -> All Source #mconcat :: [All] -> All Source # type Rep All Source # Instance detailsDefined in Data.Semigroup.Internal type Rep All = D1 (MetaData "All" "Data.Semigroup.Internal" "base" True) (C1 (MetaCons "All" PrefixI True) (S1 (MetaSel (Just "getAll") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool))) newtype Any Source # Boolean monoid under disjunction (||). >>> getAny (Any True <> mempty <> Any False) True  >>> getAny (mconcat (map (\x -> Any (even x)) [2,4,6,7,8])) True  Constructors  Any FieldsgetAny :: Bool Instances  Source # Instance detailsDefined in Data.Semigroup.Internal Methods Source # Instance detailsDefined in Data.Semigroup.Internal Methods(==) :: Any -> Any -> Bool #(/=) :: Any -> Any -> Bool # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Data Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Any -> c Any Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Any Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Any) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Any) Source #gmapT :: (forall b. Data b => b -> b) -> Any -> Any Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Any -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Any -> r Source #gmapQ :: (forall d. Data d => d -> u) -> Any -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> Any -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Any -> m Any Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Any -> m Any Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Any -> m Any Source # Source # Instance detailsDefined in Data.Semigroup.Internal Methodscompare :: Any -> Any -> Ordering #(<) :: Any -> Any -> Bool #(<=) :: Any -> Any -> Bool #(>) :: Any -> Any -> Bool #(>=) :: Any -> Any -> Bool #max :: Any -> Any -> Any #min :: Any -> Any -> Any # Source # Instance detailsDefined in Data.Semigroup.Internal Methods Source # Instance detailsDefined in Data.Semigroup.Internal MethodsshowList :: [Any] -> ShowS Source # Source # Instance detailsDefined in Data.Semigroup.Internal Associated Typestype Rep Any :: * -> * Source # Methodsfrom :: Any -> Rep Any x Source #to :: Rep Any x -> Any Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Any -> Any -> Any Source #stimes :: Integral b => b -> Any -> Any Source # Source # Since: base-2.1 Instance detailsDefined in Data.Semigroup.Internal Methodsmappend :: Any -> Any -> Any Source #mconcat :: [Any] -> Any Source # type Rep Any Source # Instance detailsDefined in Data.Semigroup.Internal type Rep Any = D1 (MetaData "Any" "Data.Semigroup.Internal" "base" True) (C1 (MetaCons "Any" PrefixI True) (S1 (MetaSel (Just "getAny") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool))) newtype Sum a Source # Monoid under addition. >>> getSum (Sum 1 <> Sum 2 <> mempty) 3  Constructors  Sum FieldsgetSum :: a Instances  Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(>>=) :: Sum a -> (a -> Sum b) -> Sum b Source #(>>) :: Sum a -> Sum b -> Sum b Source #return :: a -> Sum a Source #fail :: String -> Sum a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methodsfmap :: (a -> b) -> Sum a -> Sum b Source #(<$) :: a -> Sum b -> Sum a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Control.Monad.Fix Methodsmfix :: (a -> Sum a) -> Sum a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methodspure :: a -> Sum a Source #(<*>) :: Sum (a -> b) -> Sum a -> Sum b Source #liftA2 :: (a -> b -> c) -> Sum a -> Sum b -> Sum c Source #(*>) :: Sum a -> Sum b -> Sum b Source #(<*) :: Sum a -> Sum b -> Sum a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Foldable Methodsfold :: Monoid m => Sum m -> m Source #foldMap :: Monoid m => (a -> m) -> Sum a -> m Source #foldr :: (a -> b -> b) -> b -> Sum a -> b Source #foldr' :: (a -> b -> b) -> b -> Sum a -> b Source #foldl :: (b -> a -> b) -> b -> Sum a -> b Source #foldl' :: (b -> a -> b) -> b -> Sum a -> b Source #foldr1 :: (a -> a -> a) -> Sum a -> a Source #foldl1 :: (a -> a -> a) -> Sum a -> a Source #toList :: Sum a -> [a] Source #null :: Sum a -> Bool Source #length :: Sum a -> Int Source #elem :: Eq a => a -> Sum a -> Bool Source #maximum :: Ord a => Sum a -> a Source #minimum :: Ord a => Sum a -> a Source #sum :: Num a => Sum a -> a Source #product :: Num a => Sum a -> a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Traversable Methodstraverse :: Applicative f => (a -> f b) -> Sum a -> f (Sum b) Source #sequenceA :: Applicative f => Sum (f a) -> f (Sum a) Source #mapM :: Monad m => (a -> m b) -> Sum a -> m (Sum b) Source #sequence :: Monad m => Sum (m a) -> m (Sum a) Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Control.Monad.Zip Methodsmzip :: Sum a -> Sum b -> Sum (a, b) Source #mzipWith :: (a -> b -> c) -> Sum a -> Sum b -> Sum c Source #munzip :: Sum (a, b) -> (Sum a, Sum b) Source # Bounded a => Bounded (Sum a) Source # Instance detailsDefined in Data.Semigroup.Internal Methods Eq a => Eq (Sum a) Source # Instance detailsDefined in Data.Semigroup.Internal Methods(==) :: Sum a -> Sum a -> Bool #(/=) :: Sum a -> Sum a -> Bool # Data a => Data (Sum a) Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Data Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Sum a -> c (Sum a) Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Sum a) Source #toConstr :: Sum a -> Constr Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Sum a)) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Sum a)) Source #gmapT :: (forall b. Data b => b -> b) -> Sum a -> Sum a Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sum a -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sum a -> r Source #gmapQ :: (forall d. Data d => d -> u) -> Sum a -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> Sum a -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Sum a -> m (Sum a) Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Sum a -> m (Sum a) Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Sum a -> m (Sum a) Source # Num a => Num (Sum a) Source # Instance detailsDefined in Data.Semigroup.Internal Methods(+) :: Sum a -> Sum a -> Sum a Source #(-) :: Sum a -> Sum a -> Sum a Source #(*) :: Sum a -> Sum a -> Sum a Source #negate :: Sum a -> Sum a Source #abs :: Sum a -> Sum a Source #signum :: Sum a -> Sum a Source # Ord a => Ord (Sum a) Source # Instance detailsDefined in Data.Semigroup.Internal Methodscompare :: Sum a -> Sum a -> Ordering #(<) :: Sum a -> Sum a -> Bool #(<=) :: Sum a -> Sum a -> Bool #(>) :: Sum a -> Sum a -> Bool #(>=) :: Sum a -> Sum a -> Bool #max :: Sum a -> Sum a -> Sum a #min :: Sum a -> Sum a -> Sum a # Read a => Read (Sum a) Source # Instance detailsDefined in Data.Semigroup.Internal MethodsreadsPrec :: Int -> ReadS (Sum a) Source # Show a => Show (Sum a) Source # Instance detailsDefined in Data.Semigroup.Internal MethodsshowsPrec :: Int -> Sum a -> ShowS Source #show :: Sum a -> String Source #showList :: [Sum a] -> ShowS Source # Generic (Sum a) Source # Instance detailsDefined in Data.Semigroup.Internal Associated Typestype Rep (Sum a) :: * -> * Source # Methodsfrom :: Sum a -> Rep (Sum a) x Source #to :: Rep (Sum a) x -> Sum a Source # Num a => Semigroup (Sum a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Sum a -> Sum a -> Sum a Source #sconcat :: NonEmpty (Sum a) -> Sum a Source #stimes :: Integral b => b -> Sum a -> Sum a Source # Num a => Monoid (Sum a) Source # Since: base-2.1 Instance detailsDefined in Data.Semigroup.Internal Methodsmappend :: Sum a -> Sum a -> Sum a Source #mconcat :: [Sum a] -> Sum a Source # Source # Instance detailsDefined in Data.Semigroup.Internal Associated Typestype Rep1 Sum :: k -> * Source # Methodsfrom1 :: Sum a -> Rep1 Sum a Source #to1 :: Rep1 Sum a -> Sum a Source # type Rep (Sum a) Source # Instance detailsDefined in Data.Semigroup.Internal type Rep (Sum a) = D1 (MetaData "Sum" "Data.Semigroup.Internal" "base" True) (C1 (MetaCons "Sum" PrefixI True) (S1 (MetaSel (Just "getSum") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))) type Rep1 Sum Source # Instance detailsDefined in Data.Semigroup.Internal type Rep1 Sum = D1 (MetaData "Sum" "Data.Semigroup.Internal" "base" True) (C1 (MetaCons "Sum" PrefixI True) (S1 (MetaSel (Just "getSum") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))

newtype Product a Source #

Monoid under multiplication.

>>> getProduct (Product 3 <> Product 4 <> mempty)
12


Constructors

 Product FieldsgetProduct :: a
Instances
 Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(>>=) :: Product a -> (a -> Product b) -> Product b Source #(>>) :: Product a -> Product b -> Product b Source #return :: a -> Product a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methodsfmap :: (a -> b) -> Product a -> Product b Source #(<$) :: a -> Product b -> Product a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Control.Monad.Fix Methodsmfix :: (a -> Product a) -> Product a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Semigroup.Internal Methodspure :: a -> Product a Source #(<*>) :: Product (a -> b) -> Product a -> Product b Source #liftA2 :: (a -> b -> c) -> Product a -> Product b -> Product c Source #(*>) :: Product a -> Product b -> Product b Source #(<*) :: Product a -> Product b -> Product a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Foldable Methodsfold :: Monoid m => Product m -> m Source #foldMap :: Monoid m => (a -> m) -> Product a -> m Source #foldr :: (a -> b -> b) -> b -> Product a -> b Source #foldr' :: (a -> b -> b) -> b -> Product a -> b Source #foldl :: (b -> a -> b) -> b -> Product a -> b Source #foldl' :: (b -> a -> b) -> b -> Product a -> b Source #foldr1 :: (a -> a -> a) -> Product a -> a Source #foldl1 :: (a -> a -> a) -> Product a -> a Source #toList :: Product a -> [a] Source #null :: Product a -> Bool Source #length :: Product a -> Int Source #elem :: Eq a => a -> Product a -> Bool Source #maximum :: Ord a => Product a -> a Source #minimum :: Ord a => Product a -> a Source #sum :: Num a => Product a -> a Source #product :: Num a => Product a -> a Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Traversable Methodstraverse :: Applicative f => (a -> f b) -> Product a -> f (Product b) Source #sequenceA :: Applicative f => Product (f a) -> f (Product a) Source #mapM :: Monad m => (a -> m b) -> Product a -> m (Product b) Source #sequence :: Monad m => Product (m a) -> m (Product a) Source # Source # Since: base-4.8.0.0 Instance detailsDefined in Control.Monad.Zip Methodsmzip :: Product a -> Product b -> Product (a, b) Source #mzipWith :: (a -> b -> c) -> Product a -> Product b -> Product c Source #munzip :: Product (a, b) -> (Product a, Product b) Source # Bounded a => Bounded (Product a) Source # Instance detailsDefined in Data.Semigroup.Internal Methods Eq a => Eq (Product a) Source # Instance detailsDefined in Data.Semigroup.Internal Methods(==) :: Product a -> Product a -> Bool #(/=) :: Product a -> Product a -> Bool # Data a => Data (Product a) Source # Since: base-4.8.0.0 Instance detailsDefined in Data.Data Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Product a -> c (Product a) Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Product a) Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Product a)) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Product a)) Source #gmapT :: (forall b. Data b => b -> b) -> Product a -> Product a Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Product a -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Product a -> r Source #gmapQ :: (forall d. Data d => d -> u) -> Product a -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> Product a -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Product a -> m (Product a) Source # Num a => Num (Product a) Source # Instance detailsDefined in Data.Semigroup.Internal Methods(+) :: Product a -> Product a -> Product a Source #(-) :: Product a -> Product a -> Product a Source #(*) :: Product a -> Product a -> Product a Source #negate :: Product a -> Product a Source #abs :: Product a -> Product a Source #signum :: Product a -> Product a Source # Ord a => Ord (Product a) Source # Instance detailsDefined in Data.Semigroup.Internal Methodscompare :: Product a -> Product a -> Ordering #(<) :: Product a -> Product a -> Bool #(<=) :: Product a -> Product a -> Bool #(>) :: Product a -> Product a -> Bool #(>=) :: Product a -> Product a -> Bool #max :: Product a -> Product a -> Product a #min :: Product a -> Product a -> Product a # Read a => Read (Product a) Source # Instance detailsDefined in Data.Semigroup.Internal Methods Show a => Show (Product a) Source # Instance detailsDefined in Data.Semigroup.Internal MethodsshowsPrec :: Int -> Product a -> ShowS Source #show :: Product a -> String Source #showList :: [Product a] -> ShowS Source # Source # Instance detailsDefined in Data.Semigroup.Internal Associated Typestype Rep (Product a) :: * -> * Source # Methodsfrom :: Product a -> Rep (Product a) x Source #to :: Rep (Product a) x -> Product a Source # Num a => Semigroup (Product a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup.Internal Methods(<>) :: Product a -> Product a -> Product a Source #sconcat :: NonEmpty (Product a) -> Product a Source #stimes :: Integral b => b -> Product a -> Product a Source # Num a => Monoid (Product a) Source # Since: base-2.1 Instance detailsDefined in Data.Semigroup.Internal Methodsmappend :: Product a -> Product a -> Product a Source #mconcat :: [Product a] -> Product a Source # Source # Instance detailsDefined in Data.Semigroup.Internal Associated Typestype Rep1 Product :: k -> * Source # Methodsto1 :: Rep1 Product a -> Product a Source # type Rep (Product a) Source # Instance detailsDefined in Data.Semigroup.Internal type Rep (Product a) = D1 (MetaData "Product" "Data.Semigroup.Internal" "base" True) (C1 (MetaCons "Product" PrefixI True) (S1 (MetaSel (Just "getProduct") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))) type Rep1 Product Source # Instance detailsDefined in Data.Semigroup.Internal type Rep1 Product = D1 (MetaData "Product" "Data.Semigroup.Internal" "base" True) (C1 (MetaCons "Product" PrefixI True) (S1 (MetaSel (Just "getProduct") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1)) A better monoid for Maybe newtype Option a Source # Option is effectively Maybe with a better instance of Monoid, built off of an underlying Semigroup instead of an underlying Monoid. Ideally, this type would not exist at all and we would just fix the Monoid instance of Maybe Constructors  Option FieldsgetOption :: Maybe a Instances  Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(>>=) :: Option a -> (a -> Option b) -> Option b Source #(>>) :: Option a -> Option b -> Option b Source #return :: a -> Option a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfmap :: (a -> b) -> Option a -> Option b Source #(<$) :: a -> Option b -> Option a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsmfix :: (a -> Option a) -> Option a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodspure :: a -> Option a Source #(<*>) :: Option (a -> b) -> Option a -> Option b Source #liftA2 :: (a -> b -> c) -> Option a -> Option b -> Option c Source #(*>) :: Option a -> Option b -> Option b Source #(<*) :: Option a -> Option b -> Option a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfold :: Monoid m => Option m -> m Source #foldMap :: Monoid m => (a -> m) -> Option a -> m Source #foldr :: (a -> b -> b) -> b -> Option a -> b Source #foldr' :: (a -> b -> b) -> b -> Option a -> b Source #foldl :: (b -> a -> b) -> b -> Option a -> b Source #foldl' :: (b -> a -> b) -> b -> Option a -> b Source #foldr1 :: (a -> a -> a) -> Option a -> a Source #foldl1 :: (a -> a -> a) -> Option a -> a Source #toList :: Option a -> [a] Source #null :: Option a -> Bool Source #length :: Option a -> Int Source #elem :: Eq a => a -> Option a -> Bool Source #maximum :: Ord a => Option a -> a Source #minimum :: Ord a => Option a -> a Source #sum :: Num a => Option a -> a Source #product :: Num a => Option a -> a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodstraverse :: Applicative f => (a -> f b) -> Option a -> f (Option b) Source #sequenceA :: Applicative f => Option (f a) -> f (Option a) Source #mapM :: Monad m => (a -> m b) -> Option a -> m (Option b) Source #sequence :: Monad m => Option (m a) -> m (Option a) Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsmplus :: Option a -> Option a -> Option a Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<|>) :: Option a -> Option a -> Option a Source #some :: Option a -> Option [a] Source #many :: Option a -> Option [a] Source # Eq a => Eq (Option a) Source # Instance detailsDefined in Data.Semigroup Methods(==) :: Option a -> Option a -> Bool #(/=) :: Option a -> Option a -> Bool # Data a => Data (Option a) Source # Instance detailsDefined in Data.Semigroup Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Option a -> c (Option a) Source #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Option a) Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Option a)) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Option a)) Source #gmapT :: (forall b. Data b => b -> b) -> Option a -> Option a Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Option a -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Option a -> r Source #gmapQ :: (forall d. Data d => d -> u) -> Option a -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> Option a -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Option a -> m (Option a) Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Option a -> m (Option a) Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Option a -> m (Option a) Source # Ord a => Ord (Option a) Source # Instance detailsDefined in Data.Semigroup Methodscompare :: Option a -> Option a -> Ordering #(<) :: Option a -> Option a -> Bool #(<=) :: Option a -> Option a -> Bool #(>) :: Option a -> Option a -> Bool #(>=) :: Option a -> Option a -> Bool #max :: Option a -> Option a -> Option a #min :: Option a -> Option a -> Option a # Read a => Read (Option a) Source # Instance detailsDefined in Data.Semigroup Methods Show a => Show (Option a) Source # Instance detailsDefined in Data.Semigroup MethodsshowsPrec :: Int -> Option a -> ShowS Source #show :: Option a -> String Source #showList :: [Option a] -> ShowS Source # Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep (Option a) :: * -> * Source # Methodsfrom :: Option a -> Rep (Option a) x Source #to :: Rep (Option a) x -> Option a Source # Semigroup a => Semigroup (Option a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(<>) :: Option a -> Option a -> Option a Source #sconcat :: NonEmpty (Option a) -> Option a Source #stimes :: Integral b => b -> Option a -> Option a Source # Semigroup a => Monoid (Option a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsmappend :: Option a -> Option a -> Option a Source #mconcat :: [Option a] -> Option a Source # Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep1 Option :: k -> * Source # Methodsfrom1 :: Option a -> Rep1 Option a Source #to1 :: Rep1 Option a -> Option a Source # type Rep (Option a) Source # Instance detailsDefined in Data.Semigroup type Rep (Option a) = D1 (MetaData "Option" "Data.Semigroup" "base" True) (C1 (MetaCons "Option" PrefixI True) (S1 (MetaSel (Just "getOption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe a)))) type Rep1 Option Source # Instance detailsDefined in Data.Semigroup type Rep1 Option = D1 (MetaData "Option" "Data.Semigroup" "base" True) (C1 (MetaCons "Option" PrefixI True) (S1 (MetaSel (Just "getOption") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec1 Maybe)))

option :: b -> (a -> b) -> Option a -> b Source #

Fold an Option case-wise, just like maybe.

Difference lists of a semigroup

diff :: Semigroup m => m -> Endo m Source #

This lets you use a difference list of a Semigroup as a Monoid.

cycle1 :: Semigroup m => m -> m Source #

A generalization of cycle to an arbitrary Semigroup. May fail to terminate for some values in some semigroups.

ArgMin, ArgMax

data Arg a b Source #

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.

Constructors

 Arg a b
Instances
 Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsbimap :: (a -> b) -> (c -> d) -> Arg a c -> Arg b d Source #first :: (a -> b) -> Arg a c -> Arg b c Source #second :: (b -> c) -> Arg a b -> Arg a c Source # Source # Since: base-4.10.0.0 Instance detailsDefined in Data.Semigroup Methodsbifold :: Monoid m => Arg m m -> m Source #bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> Arg a b -> m Source #bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> Arg a b -> c Source #bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> Arg a b -> c Source # Source # Since: base-4.10.0.0 Instance detailsDefined in Data.Semigroup Methodsbitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> Arg a b -> f (Arg c d) Source # Functor (Arg a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfmap :: (a0 -> b) -> Arg a a0 -> Arg a b Source #(<\$) :: a0 -> Arg a b -> Arg a a0 Source # Foldable (Arg a) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodsfold :: Monoid m => Arg a m -> m Source #foldMap :: Monoid m => (a0 -> m) -> Arg a a0 -> m Source #foldr :: (a0 -> b -> b) -> b -> Arg a a0 -> b Source #foldr' :: (a0 -> b -> b) -> b -> Arg a a0 -> b Source #foldl :: (b -> a0 -> b) -> b -> Arg a a0 -> b Source #foldl' :: (b -> a0 -> b) -> b -> Arg a a0 -> b Source #foldr1 :: (a0 -> a0 -> a0) -> Arg a a0 -> a0 Source #foldl1 :: (a0 -> a0 -> a0) -> Arg a a0 -> a0 Source #toList :: Arg a a0 -> [a0] Source #null :: Arg a a0 -> Bool Source #length :: Arg a a0 -> Int Source #elem :: Eq a0 => a0 -> Arg a a0 -> Bool Source #maximum :: Ord a0 => Arg a a0 -> a0 Source #minimum :: Ord a0 => Arg a a0 -> a0 Source #sum :: Num a0 => Arg a a0 -> a0 Source #product :: Num a0 => Arg a a0 -> a0 Source # Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodstraverse :: Applicative f => (a0 -> f b) -> Arg a a0 -> f (Arg a b) Source #sequenceA :: Applicative f => Arg a (f a0) -> f (Arg a a0) Source #mapM :: Monad m => (a0 -> m b) -> Arg a a0 -> m (Arg a b) Source #sequence :: Monad m => Arg a (m a0) -> m (Arg a a0) Source # Generic1 (Arg a :: * -> *) Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep1 (Arg a) :: k -> * Source # Methodsfrom1 :: Arg a a0 -> Rep1 (Arg a) a0 Source #to1 :: Rep1 (Arg a) a0 -> Arg a a0 Source # Eq a => Eq (Arg a b) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methods(==) :: Arg a b -> Arg a b -> Bool #(/=) :: Arg a b -> Arg a b -> Bool # (Data a, Data b) => Data (Arg a b) Source # Instance detailsDefined in Data.Semigroup Methodsgfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Arg a b -> c (Arg a b) Source #gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Arg a b) Source #toConstr :: Arg a b -> Constr Source #dataTypeOf :: Arg a b -> DataType Source #dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Arg a b)) Source #dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Arg a b)) Source #gmapT :: (forall b0. Data b0 => b0 -> b0) -> Arg a b -> Arg a b Source #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r Source #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Arg a b -> r Source #gmapQ :: (forall d. Data d => d -> u) -> Arg a b -> [u] Source #gmapQi :: Int -> (forall d. Data d => d -> u) -> Arg a b -> u Source #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) Source #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) Source #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Arg a b -> m (Arg a b) Source # Ord a => Ord (Arg a b) Source # Since: base-4.9.0.0 Instance detailsDefined in Data.Semigroup Methodscompare :: Arg a b -> Arg a b -> Ordering #(<) :: Arg a b -> Arg a b -> Bool #(<=) :: Arg a b -> Arg a b -> Bool #(>) :: Arg a b -> Arg a b -> Bool #(>=) :: Arg a b -> Arg a b -> Bool #max :: Arg a b -> Arg a b -> Arg a b #min :: Arg a b -> Arg a b -> Arg a b # (Read a, Read b) => Read (Arg a b) Source # Instance detailsDefined in Data.Semigroup MethodsreadsPrec :: Int -> ReadS (Arg a b) Source #readList :: ReadS [Arg a b] Source #readPrec :: ReadPrec (Arg a b) Source # (Show a, Show b) => Show (Arg a b) Source # Instance detailsDefined in Data.Semigroup MethodsshowsPrec :: Int -> Arg a b -> ShowS Source #show :: Arg a b -> String Source #showList :: [Arg a b] -> ShowS Source # Generic (Arg a b) Source # Instance detailsDefined in Data.Semigroup Associated Typestype Rep (Arg a b) :: * -> * Source # Methodsfrom :: Arg a b -> Rep (Arg a b) x Source #to :: Rep (Arg a b) x -> Arg a b Source # type Rep1 (Arg a :: * -> *) Source # Instance detailsDefined in Data.Semigroup type Rep1 (Arg a :: * -> *) = D1 (MetaData "Arg" "Data.Semigroup" "base" False) (C1 (MetaCons "Arg" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1)) type Rep (Arg a b) Source # Instance detailsDefined in Data.Semigroup type Rep (Arg a b) = D1 (MetaData "Arg" "Data.Semigroup" "base" False) (C1 (MetaCons "Arg" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 b)))

type ArgMin a b = Min (Arg a b) Source #

type ArgMax a b = Max (Arg a b) Source #