# 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

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

(<>)

#### 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
Semigroup Ordering

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

#### Methods

stimes :: Integral b => b -> Ordering -> Ordering Source

Semigroup ()

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

#### Methods

(<>) :: () -> () -> () Source

sconcat :: NonEmpty () -> () Source

stimes :: Integral b => b -> () -> () Source

Semigroup Any

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(<>) :: Any -> Any -> Any Source

stimes :: Integral b => b -> Any -> Any Source

Semigroup All

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(<>) :: All -> All -> All Source

stimes :: Integral b => b -> All -> All Source

Since: base-4.10.0.0

Instance details

Defined in GHC.Event.Internal

#### Methods

Semigroup Event

Since: base-4.10.0.0

Instance details

Defined in GHC.Event.Internal

#### Methods

stimes :: Integral b => b -> Event -> Event Source

Semigroup Void

Since: base-4.9.0.0

Instance details

Defined in Data.Void

#### Methods

(<>) :: Void -> Void -> Void Source

stimes :: Integral b => b -> Void -> Void Source

Semigroup [a]

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.10.0.0

Instance details

Defined 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

Semigroup p => Semigroup (Par1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

(<>) :: Par1 p -> Par1 p -> Par1 p Source

sconcat :: NonEmpty (Par1 p) -> Par1 p Source

stimes :: Integral b => b -> Par1 p -> Par1 p Source

Semigroup (NonEmpty a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.11.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined 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

Semigroup (Endo a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined 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

Semigroup (Last a)

Since: base-4.9.0.0

Instance details

Defined 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

Semigroup (First a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

stimes :: Integral b => b -> WrappedMonoid m -> WrappedMonoid m Source

Semigroup (Last a)

Since: base-4.9.0.0

Instance details

Defined 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

Semigroup (First a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined 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 (Equivalence a)
Instance details

Defined in Data.Functor.Contravariant

#### Methods

(<>) :: Equivalence a -> Equivalence a -> Equivalence a Source

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

Semigroup (Comparison a)
Instance details

Defined in Data.Functor.Contravariant

#### Methods

(<>) :: Comparison a -> Comparison a -> Comparison a Source

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

Semigroup (Predicate a)
Instance details

Defined in Data.Functor.Contravariant

#### Methods

(<>) :: Predicate a -> Predicate a -> Predicate a Source

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

Semigroup b => Semigroup (a -> b)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined 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 (V1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

(<>) :: V1 p -> V1 p -> V1 p Source

sconcat :: NonEmpty (V1 p) -> V1 p Source

stimes :: Integral b => b -> V1 p -> V1 p Source

Semigroup (U1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

(<>) :: U1 p -> U1 p -> U1 p Source

sconcat :: NonEmpty (U1 p) -> U1 p Source

stimes :: Integral b => b -> U1 p -> U1 p Source

(Semigroup a, Semigroup b) => Semigroup (a, b)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.11.0.0

Instance details

Defined 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

Semigroup (Proxy s)

Since: base-4.9.0.0

Instance details

Defined 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 (Op a b)
Instance details

Defined in Data.Functor.Contravariant

#### Methods

(<>) :: Op a b -> Op a b -> Op a b Source

sconcat :: NonEmpty (Op a b) -> Op a b Source

stimes :: Integral b0 => b0 -> Op a b -> Op a b Source

Semigroup (f p) => Semigroup (Rec1 f p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

(<>) :: Rec1 f p -> Rec1 f p -> Rec1 f p Source

sconcat :: NonEmpty (Rec1 f p) -> Rec1 f p Source

stimes :: Integral b => b -> Rec1 f p -> Rec1 f p Source

(Semigroup a, Semigroup b, Semigroup c) => Semigroup (a, b, c)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined 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

(Applicative f, Semigroup a) => Semigroup (Ap f a)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

(<>) :: Ap f a -> Ap f a -> Ap f a Source

sconcat :: NonEmpty (Ap f a) -> Ap f a Source

stimes :: Integral b => b -> Ap f a -> Ap f a Source

Semigroup a => Semigroup (Const a b)

Since: base-4.9.0.0

Instance details

Defined 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 c => Semigroup (K1 i c p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

(<>) :: K1 i c p -> K1 i c p -> K1 i c p Source

sconcat :: NonEmpty (K1 i c p) -> K1 i c p Source

stimes :: Integral b => b -> K1 i c p -> K1 i c p Source

(Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

(<>) :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p Source

sconcat :: NonEmpty ((f :*: g) p) -> (f :*: g) p Source

stimes :: Integral b => b -> (f :*: g) p -> (f :*: g) p Source

(Semigroup a, Semigroup b, Semigroup c, Semigroup d) => Semigroup (a, b, c, d)

Since: base-4.9.0.0

Instance details

Defined 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 (f p) => Semigroup (M1 i c f p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

(<>) :: M1 i c f p -> M1 i c f p -> M1 i c f p Source

sconcat :: NonEmpty (M1 i c f p) -> M1 i c f p Source

stimes :: Integral b => b -> M1 i c f p -> M1 i c f p Source

Semigroup (f (g p)) => Semigroup ((f :.: g) p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

(<>) :: (f :.: g) p -> (f :.: g) p -> (f :.: g) p Source

sconcat :: NonEmpty ((f :.: g) p) -> (f :.: g) p Source

stimes :: Integral b => b -> (f :.: g) p -> (f :.: g) p Source

(Semigroup a, Semigroup b, Semigroup c, Semigroup d, Semigroup e) => Semigroup (a, b, c, d, e)

Since: base-4.9.0.0

Instance details

Defined 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

Min

#### Fields

Instances

Since: base-4.9.0.0

Instance details

Defined 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

Functor Min

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fmap :: (a -> b) -> Min a -> Min b Source

(<\$) :: a -> Min b -> Min a Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mfix :: (a -> Min a) -> Min a Source

Applicative Min

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

pure :: 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

Foldable Min

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fold :: 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

Traversable Min

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

traverse :: 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Enum a => Enum (Min a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

succ :: 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(==) :: Min a -> Min a -> Bool Source

(/=) :: Min a -> Min a -> Bool Source

Data a => Data (Min a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

gfoldl :: (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)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

compare :: Min a -> Min a -> Ordering Source

(<) :: Min a -> Min a -> Bool Source

(<=) :: Min a -> Min a -> Bool Source

(>) :: Min a -> Min a -> Bool Source

(>=) :: Min a -> Min a -> Bool Source

max :: Min a -> Min a -> Min a Source

min :: Min a -> Min a -> Min a Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Show a => Show (Min a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

showsPrec :: Int -> Min a -> ShowS Source

show :: Min a -> String Source

showList :: [Min a] -> ShowS Source

Generic (Min a)
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep (Min a) :: Type -> Type Source

#### Methods

from :: Min a -> Rep (Min a) x Source

to :: Rep (Min a) x -> Min a Source

Ord a => Semigroup (Min a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mappend :: Min a -> Min a -> Min a Source

mconcat :: [Min a] -> Min a Source

Generic1 Min
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 Min :: k -> Type Source

#### Methods

from1 :: Min a -> Rep1 Min a Source

to1 :: Rep1 Min a -> Min a Source

type Rep (Min a)

Since: base-4.9.0.0

Instance details

Defined 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

Since: base-4.9.0.0

Instance details

Defined 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

Max

#### Fields

Instances

Since: base-4.9.0.0

Instance details

Defined 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

Functor Max

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fmap :: (a -> b) -> Max a -> Max b Source

(<\$) :: a -> Max b -> Max a Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mfix :: (a -> Max a) -> Max a Source

Applicative Max

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

pure :: 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

Foldable Max

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fold :: 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

Traversable Max

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

traverse :: 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Enum a => Enum (Max a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

succ :: 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(==) :: Max a -> Max a -> Bool Source

(/=) :: Max a -> Max a -> Bool Source

Data a => Data (Max a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

gfoldl :: (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)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

compare :: Max a -> Max a -> Ordering Source

(<) :: Max a -> Max a -> Bool Source

(<=) :: Max a -> Max a -> Bool Source

(>) :: Max a -> Max a -> Bool Source

(>=) :: Max a -> Max a -> Bool Source

max :: Max a -> Max a -> Max a Source

min :: Max a -> Max a -> Max a Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Show a => Show (Max a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

showsPrec :: Int -> Max a -> ShowS Source

show :: Max a -> String Source

showList :: [Max a] -> ShowS Source

Generic (Max a)
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep (Max a) :: Type -> Type Source

#### Methods

from :: Max a -> Rep (Max a) x Source

to :: Rep (Max a) x -> Max a Source

Ord a => Semigroup (Max a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mappend :: Max a -> Max a -> Max a Source

mconcat :: [Max a] -> Max a Source

Generic1 Max
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 Max :: k -> Type Source

#### Methods

from1 :: Max a -> Rep1 Max a Source

to1 :: Rep1 Max a -> Max a Source

type Rep (Max a)

Since: base-4.9.0.0

Instance details

Defined 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

Since: base-4.9.0.0

Instance details

Defined 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.

First

#### Fields

Instances

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(>>=) :: First a -> (a -> First b) -> First b Source

(>>) :: First a -> First b -> First b Source

return :: a -> First a Source

Functor First

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fmap :: (a -> b) -> First a -> First b Source

(<\$) :: a -> First b -> First a Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mfix :: (a -> First a) -> First a Source

Applicative First

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

pure :: 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

Foldable First

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fold :: 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

Traversable First

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

traverse :: 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Enum a => Enum (First a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

succ :: First a -> First a Source

pred :: First a -> First a Source

toEnum :: Int -> 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(==) :: First a -> First a -> Bool Source

(/=) :: First a -> First a -> Bool Source

Data a => Data (First a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

gfoldl :: (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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

compare :: First a -> First a -> Ordering Source

(<) :: First a -> First a -> Bool Source

(<=) :: First a -> First a -> Bool Source

(>) :: First a -> First a -> Bool Source

(>=) :: First a -> First a -> Bool Source

max :: First a -> First a -> First a Source

min :: First a -> First a -> First a Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Show a => Show (First a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

showsPrec :: Int -> First a -> ShowS Source

show :: First a -> String Source

showList :: [First a] -> ShowS Source

Generic (First a)
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep (First a) :: Type -> Type Source

#### Methods

from :: First a -> Rep (First a) x Source

to :: Rep (First a) x -> First a Source

Semigroup (First a)

Since: base-4.9.0.0

Instance details

Defined 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

Generic1 First
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 First :: k -> Type Source

#### Methods

from1 :: First a -> Rep1 First a Source

to1 :: Rep1 First a -> First a Source

type Rep (First a)

Since: base-4.9.0.0

Instance details

Defined 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

Since: base-4.9.0.0

Instance details

Defined 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

Last

#### Fields

Instances

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(>>=) :: Last a -> (a -> Last b) -> Last b Source

(>>) :: Last a -> Last b -> Last b Source

return :: a -> Last a Source

fail :: String -> Last a Source

Functor Last

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fmap :: (a -> b) -> Last a -> Last b Source

(<\$) :: a -> Last b -> Last a Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mfix :: (a -> Last a) -> Last a Source

Applicative Last

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

pure :: 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

Foldable Last

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fold :: 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

Traversable Last

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

traverse :: 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Enum a => Enum (Last a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

succ :: 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(==) :: Last a -> Last a -> Bool Source

(/=) :: Last a -> Last a -> Bool Source

Data a => Data (Last a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

gfoldl :: (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

toConstr :: Last a -> Constr 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

compare :: Last a -> Last a -> Ordering Source

(<) :: Last a -> Last a -> Bool Source

(<=) :: Last a -> Last a -> Bool Source

(>) :: Last a -> Last a -> Bool Source

(>=) :: Last a -> Last a -> Bool Source

max :: Last a -> Last a -> Last a Source

min :: Last a -> Last a -> Last a Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Show a => Show (Last a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

showsPrec :: Int -> Last a -> ShowS Source

show :: Last a -> String Source

showList :: [Last a] -> ShowS Source

Generic (Last a)
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep (Last a) :: Type -> Type Source

#### Methods

from :: Last a -> Rep (Last a) x Source

to :: Rep (Last a) x -> Last a Source

Semigroup (Last a)

Since: base-4.9.0.0

Instance details

Defined 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

Generic1 Last
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 Last :: k -> Type Source

#### Methods

from1 :: Last a -> Rep1 Last a Source

to1 :: Rep1 Last a -> Last a Source

type Rep (Last a)

Since: base-4.9.0.0

Instance details

Defined 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

Since: base-4.9.0.0

Instance details

Defined 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.

WrapMonoid

#### Fields

Instances
Bounded m => Bounded (WrappedMonoid m)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Enum a => Enum (WrappedMonoid a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Eq m => Eq (WrappedMonoid m)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(==) :: WrappedMonoid m -> WrappedMonoid m -> Bool Source

(/=) :: WrappedMonoid m -> WrappedMonoid m -> Bool Source

Data m => Data (WrappedMonoid m)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

gfoldl :: (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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Show m => Show (WrappedMonoid m)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

showList :: [WrappedMonoid m] -> ShowS Source

Generic (WrappedMonoid m)
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep (WrappedMonoid m) :: Type -> Type Source

#### Methods

from :: WrappedMonoid m -> Rep (WrappedMonoid m) x Source

to :: Rep (WrappedMonoid m) x -> WrappedMonoid m Source

Monoid m => Semigroup (WrappedMonoid m)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

stimes :: Integral b => b -> WrappedMonoid m -> WrappedMonoid m Source

Monoid m => Monoid (WrappedMonoid m)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mconcat :: [WrappedMonoid m] -> WrappedMonoid m Source

Generic1 WrappedMonoid
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 WrappedMonoid :: k -> Type Source

#### Methods

type Rep (WrappedMonoid m)

Since: base-4.9.0.0

Instance details

Defined 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)))
type Rep1 WrappedMonoid

Since: base-4.9.0.0

Instance details

Defined 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"
```

Dual

#### Fields

Instances

Since: base-4.8.0.0

Instance details

Defined 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

fail :: String -> Dual a Source

Functor Dual

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

fmap :: (a -> b) -> Dual a -> Dual b Source

(<\$) :: a -> Dual b -> Dual a Source

Since: base-4.8.0.0

Instance details

#### Methods

mfix :: (a -> Dual a) -> Dual a Source

Applicative Dual

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

pure :: 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

Foldable Dual

Since: base-4.8.0.0

Instance details

Defined in Data.Foldable

#### Methods

fold :: 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

Traversable Dual

Since: base-4.8.0.0

Instance details

Defined in Data.Traversable

#### Methods

traverse :: 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

Since: base-4.8.0.0

Instance details

#### Methods

mzip :: 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)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Eq a => Eq (Dual a)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(==) :: Dual a -> Dual a -> Bool Source

(/=) :: Dual a -> Dual a -> Bool Source

Data a => Data (Dual a)

Since: base-4.8.0.0

Instance details

Defined in Data.Data

#### Methods

gfoldl :: (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

toConstr :: Dual a -> Constr 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)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

compare :: Dual a -> Dual a -> Ordering Source

(<) :: Dual a -> Dual a -> Bool Source

(<=) :: Dual a -> Dual a -> Bool Source

(>) :: Dual a -> Dual a -> Bool Source

(>=) :: Dual a -> Dual a -> Bool Source

max :: Dual a -> Dual a -> Dual a Source

min :: Dual a -> Dual a -> Dual a Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Show a => Show (Dual a)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

showsPrec :: Int -> Dual a -> ShowS Source

show :: Dual a -> String Source

showList :: [Dual a] -> ShowS Source

Generic (Dual a)
Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep (Dual a) :: Type -> Type Source

#### Methods

from :: Dual a -> Rep (Dual a) x Source

to :: Rep (Dual a) x -> Dual a Source

Semigroup a => Semigroup (Dual a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mappend :: Dual a -> Dual a -> Dual a Source

mconcat :: [Dual a] -> Dual a Source

Generic1 Dual
Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep1 Dual :: k -> Type Source

#### Methods

from1 :: Dual a -> Rep1 Dual a Source

to1 :: Rep1 Dual a -> Dual a Source

type Rep (Dual a)

Since: base-4.7.0.0

Instance details

Defined 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

Since: base-4.7.0.0

Instance details

Defined 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 (++ "!")
```

Endo

#### Fields

Instances
Generic (Endo a)
Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep (Endo a) :: Type -> Type Source

#### Methods

from :: Endo a -> Rep (Endo a) x Source

to :: Rep (Endo a) x -> Endo a Source

Semigroup (Endo a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mappend :: Endo a -> Endo a -> Endo a Source

mconcat :: [Endo a] -> Endo a Source

type Rep (Endo a)

Since: base-4.7.0.0

Instance details

Defined 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
```

All

#### Fields

Instances
Bounded All

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Eq All

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(==) :: All -> All -> Bool Source

(/=) :: All -> All -> Bool Source

Data All

Since: base-4.8.0.0

Instance details

Defined in Data.Data

#### Methods

gfoldl :: (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

Ord All

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(<) :: All -> All -> Bool Source

(<=) :: All -> All -> Bool Source

(>) :: All -> All -> Bool Source

(>=) :: All -> All -> Bool Source

max :: All -> All -> All Source

min :: All -> All -> All Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Show All

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

showList :: [All] -> ShowS Source

Generic All
Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep All :: Type -> Type Source

#### Methods

from :: All -> Rep All x Source

to :: Rep All x -> All Source

Semigroup All

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(<>) :: All -> All -> All Source

stimes :: Integral b => b -> All -> All Source

Monoid All

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mappend :: All -> All -> All Source

mconcat :: [All] -> All Source

type Rep All

Since: base-4.7.0.0

Instance details

Defined 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
```

Any

#### Fields

Instances
Bounded Any

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Eq Any

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(==) :: Any -> Any -> Bool Source

(/=) :: Any -> Any -> Bool Source

Data Any

Since: base-4.8.0.0

Instance details

Defined in Data.Data

#### Methods

gfoldl :: (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

Ord Any

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(<) :: Any -> Any -> Bool Source

(<=) :: Any -> Any -> Bool Source

(>) :: Any -> Any -> Bool Source

(>=) :: Any -> Any -> Bool Source

max :: Any -> Any -> Any Source

min :: Any -> Any -> Any Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Show Any

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

showList :: [Any] -> ShowS Source

Generic Any
Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep Any :: Type -> Type Source

#### Methods

from :: Any -> Rep Any x Source

to :: Rep Any x -> Any Source

Semigroup Any

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(<>) :: Any -> Any -> Any Source

stimes :: Integral b => b -> Any -> Any Source

Monoid Any

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mappend :: Any -> Any -> Any Source

mconcat :: [Any] -> Any Source

type Rep Any

Since: base-4.7.0.0

Instance details

Defined 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

```>>> getSum (Sum 1 <> Sum 2 <> mempty)
3
```

Sum

#### Fields

Instances

Since: base-4.8.0.0

Instance details

Defined 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

Functor Sum

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

fmap :: (a -> b) -> Sum a -> Sum b Source

(<\$) :: a -> Sum b -> Sum a Source

Since: base-4.8.0.0

Instance details

#### Methods

mfix :: (a -> Sum a) -> Sum a Source

Applicative Sum

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

pure :: 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

Foldable Sum

Since: base-4.8.0.0

Instance details

Defined in Data.Foldable

#### Methods

fold :: 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

Traversable Sum

Since: base-4.8.0.0

Instance details

Defined in Data.Traversable

#### Methods

traverse :: 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

Since: base-4.8.0.0

Instance details

#### Methods

mzip :: 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)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Eq a => Eq (Sum a)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(==) :: Sum a -> Sum a -> Bool Source

(/=) :: Sum a -> Sum a -> Bool Source

Data a => Data (Sum a)

Since: base-4.8.0.0

Instance details

Defined in Data.Data

#### Methods

gfoldl :: (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)

Since: base-4.7.0.0

Instance details

Defined 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)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

compare :: Sum a -> Sum a -> Ordering Source

(<) :: Sum a -> Sum a -> Bool Source

(<=) :: Sum a -> Sum a -> Bool Source

(>) :: Sum a -> Sum a -> Bool Source

(>=) :: Sum a -> Sum a -> Bool Source

max :: Sum a -> Sum a -> Sum a Source

min :: Sum a -> Sum a -> Sum a Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Show a => Show (Sum a)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

showsPrec :: Int -> Sum a -> ShowS Source

show :: Sum a -> String Source

showList :: [Sum a] -> ShowS Source

Generic (Sum a)
Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep (Sum a) :: Type -> Type Source

#### Methods

from :: Sum a -> Rep (Sum a) x Source

to :: Rep (Sum a) x -> Sum a Source

Num a => Semigroup (Sum a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mappend :: Sum a -> Sum a -> Sum a Source

mconcat :: [Sum a] -> Sum a Source

Generic1 Sum
Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep1 Sum :: k -> Type Source

#### Methods

from1 :: Sum a -> Rep1 Sum a Source

to1 :: Rep1 Sum a -> Sum a Source

type Rep (Sum a)

Since: base-4.7.0.0

Instance details

Defined 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

Since: base-4.7.0.0

Instance details

Defined 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
```

Product

#### Fields

Instances

Since: base-4.8.0.0

Instance details

Defined 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

Functor Product

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

fmap :: (a -> b) -> Product a -> Product b Source

(<\$) :: a -> Product b -> Product a Source

Since: base-4.8.0.0

Instance details

#### Methods

mfix :: (a -> Product a) -> Product a Source

Applicative Product

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

pure :: 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

Foldable Product

Since: base-4.8.0.0

Instance details

Defined in Data.Foldable

#### Methods

fold :: 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

Traversable Product

Since: base-4.8.0.0

Instance details

Defined in Data.Traversable

#### Methods

traverse :: 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

Since: base-4.8.0.0

Instance details

#### Methods

mzip :: 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)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Eq a => Eq (Product a)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(==) :: Product a -> Product a -> Bool Source

(/=) :: Product a -> Product a -> Bool Source

Data a => Data (Product a)

Since: base-4.8.0.0

Instance details

Defined in Data.Data

#### Methods

gfoldl :: (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)

Since: base-4.7.0.0

Instance details

Defined 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)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

compare :: Product a -> Product a -> Ordering Source

(<) :: Product a -> Product a -> Bool Source

(<=) :: Product a -> Product a -> Bool Source

(>) :: Product a -> Product a -> Bool Source

(>=) :: Product a -> Product a -> Bool Source

max :: Product a -> Product a -> Product a Source

min :: Product a -> Product a -> Product a Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Show a => Show (Product a)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

showsPrec :: Int -> Product a -> ShowS Source

show :: Product a -> String Source

showList :: [Product a] -> ShowS Source

Generic (Product a)
Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep (Product a) :: Type -> Type Source

#### Methods

from :: Product a -> Rep (Product a) x Source

to :: Rep (Product a) x -> Product a Source

Num a => Semigroup (Product a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mappend :: Product a -> Product a -> Product a Source

mconcat :: [Product a] -> Product a Source

Generic1 Product
Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep1 Product :: k -> Type Source

#### Methods

to1 :: Rep1 Product a -> Product a Source

type Rep (Product a)

Since: base-4.7.0.0

Instance details

Defined 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

Since: base-4.7.0.0

Instance details

Defined 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`.

In GHC 8.4 and higher, the `Monoid` instance for `Maybe` has been corrected to lift a `Semigroup` instance instead of a `Monoid` instance. Consequently, this type is no longer useful. It will be marked deprecated in GHC 8.8 and removed in GHC 8.10.

Option

#### Fields

Instances

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(>>=) :: Option a -> (a -> Option b) -> Option b Source

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

return :: a -> Option a Source

Functor Option

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fmap :: (a -> b) -> Option a -> Option b Source

(<\$) :: a -> Option b -> Option a Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mfix :: (a -> Option a) -> Option a Source

Applicative Option

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

pure :: 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

Foldable Option

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fold :: 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

Traversable Option

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

traverse :: 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

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mplus :: Option a -> Option a -> Option a Source

Alternative Option

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(==) :: Option a -> Option a -> Bool Source

(/=) :: Option a -> Option a -> Bool Source

Data a => Data (Option a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

gfoldl :: (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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

compare :: Option a -> Option a -> Ordering Source

(<) :: Option a -> Option a -> Bool Source

(<=) :: Option a -> Option a -> Bool Source

(>) :: Option a -> Option a -> Bool Source

(>=) :: Option a -> Option a -> Bool Source

max :: Option a -> Option a -> Option a Source

min :: Option a -> Option a -> Option a Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

Show a => Show (Option a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

showsPrec :: Int -> Option a -> ShowS Source

show :: Option a -> String Source

showList :: [Option a] -> ShowS Source

Generic (Option a)
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep (Option a) :: Type -> Type Source

#### Methods

from :: Option a -> Rep (Option a) x Source

to :: Rep (Option a) x -> Option a Source

Semigroup a => Semigroup (Option a)

Since: base-4.9.0.0

Instance details

Defined 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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mappend :: Option a -> Option a -> Option a Source

mconcat :: [Option a] -> Option a Source

Generic1 Option
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 Option :: k -> Type Source

#### Methods

from1 :: Option a -> Rep1 Option a Source

to1 :: Rep1 Option a -> Option a Source

type Rep (Option a)

Since: base-4.9.0.0

Instance details

Defined 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

Since: base-4.9.0.0

Instance details

Defined 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
Bifunctor Arg

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

bimap :: (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

Bifoldable Arg

Since: base-4.10.0.0

Instance details

Defined in Data.Semigroup

#### Methods

bifold :: 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

Bitraversable Arg

Since: base-4.10.0.0

Instance details

Defined in Data.Semigroup

#### Methods

bitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> Arg a b -> f (Arg c d) Source

Functor (Arg a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fmap :: (a0 -> b) -> Arg a a0 -> Arg a b Source

(<\$) :: a0 -> Arg a b -> Arg a a0 Source

Foldable (Arg a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

fold :: 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

Traversable (Arg a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

traverse :: 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 :: Type -> Type)
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 (Arg a) :: k -> Type Source

#### Methods

from1 :: Arg a a0 -> Rep1 (Arg a) a0 Source

to1 :: Rep1 (Arg a) a0 -> Arg a a0 Source

Eq a => Eq (Arg a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(==) :: Arg a b -> Arg a b -> Bool Source

(/=) :: Arg a b -> Arg a b -> Bool Source

(Data a, Data b) => Data (Arg a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

gfoldl :: (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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

compare :: Arg a b -> Arg a b -> Ordering Source

(<) :: Arg a b -> Arg a b -> Bool Source

(<=) :: Arg a b -> Arg a b -> Bool Source

(>) :: Arg a b -> Arg a b -> Bool Source

(>=) :: Arg a b -> Arg a b -> Bool Source

max :: Arg a b -> Arg a b -> Arg a b Source

min :: Arg a b -> Arg a b -> Arg a b Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

(Show a, Show b) => Show (Arg a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

showsPrec :: Int -> Arg a b -> ShowS Source

show :: Arg a b -> String Source

showList :: [Arg a b] -> ShowS Source

Generic (Arg a b)
Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep (Arg a b) :: Type -> Type Source

#### Methods

from :: Arg a b -> Rep (Arg a b) x Source

to :: Rep (Arg a b) x -> Arg a b Source

type Rep1 (Arg a :: Type -> Type)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

type Rep (Arg a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

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

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

© The University of Glasgow and others