# Data.Semigroup

#### Description

A type `a` is a `Semigroup` if it provides an associative function (`<>`) that lets you combine any two values of type `a` into one. Where being associative means that the following must always hold:

```>>> (a <> b) <> c == a <> (b <> c)
```
##### Examples
Expand

The `Min` `Semigroup` instance for `Int` is defined to always pick the smaller number: >>> Min 1 <> Min 2 <> Min 3 <> Min 4 :: Min Int Min {getMin = 1}

If we need to combine multiple values we can use the `sconcat` function to do so. We need to ensure however that we have at least one value to operate on, since otherwise our result would be undefined. It is for this reason that `sconcat` uses Data.List.NonEmpty.NonEmpty - a list that can never be empty:

```>>> (1 :| [])
1 :| []               -- equivalent to [1] but guaranteed to be non-empty
>>> (1 :| [2, 3, 4])
1 :| [2,3,4]          -- equivalent to [1,2,3,4] but guaranteed to be non-empty
```

Equipped with this guaranteed to be non-empty data structure, we can combine values using `sconcat` and a `Semigroup` of our choosing. We can try the `Min` and `Max` instances of `Int` which pick the smallest, or largest number respectively:

```>>> sconcat (1 :| [2, 3, 4]) :: Min Int
Min {getMin = 1}
>>> sconcat (1 :| [2, 3, 4]) :: Max Int
Max {getMax = 4}
```

String concatenation is another example of a `Semigroup` instance:

```>>> "foo" <> "bar"
"foobar"
```

A `Semigroup` is a generalization of a `Monoid`. Yet unlike the `Semigroup`, the `Monoid` requires the presence of a neutral element (`mempty`) in addition to the associative operator. The requirement for a neutral element prevents many types from being a full Monoid, like Data.List.NonEmpty.NonEmpty.

Note that the use of `(<>)` in this module conflicts with an operator with the same name that is being exported by Data.Monoid. However, this package re-exports (most of) the contents of Data.Monoid, so to use semigroups and monoids in the same package just

`import Data.Semigroup`

Since: base-4.9.0.0

class Semigroup a where Source

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

Instances should satisfy the following:

Associativity
`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
Instances details
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
Instances details

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

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

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 :: forall r r'. (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)

Since: base-4.9.0.0

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

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 Min :: k -> Type Source

#### Methods

from1 :: forall (a :: k). Min a -> Rep1 Min a Source

to1 :: forall (a :: k). Rep1 Min a -> Min a Source

type Rep (Min a)
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
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
Instances details

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

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

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 :: forall r r'. (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)

Since: base-4.9.0.0

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

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 Max :: k -> Type Source

#### Methods

from1 :: forall (a :: k). Max a -> Rep1 Max a Source

to1 :: forall (a :: k). Rep1 Max a -> Max a Source

type Rep (Max a)
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
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
Instances details

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

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 :: forall r r'. (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)

Since: base-4.9.0.0

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

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 First :: k -> Type Source

#### Methods

from1 :: forall (a :: k). First a -> Rep1 First a Source

to1 :: forall (a :: k). Rep1 First a -> First a Source

type Rep (First a)
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
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
Instances details

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

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

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 :: forall r r'. (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)

Since: base-4.9.0.0

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

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 Last :: k -> Type Source

#### Methods

from1 :: forall (a :: k). Last a -> Rep1 Last a Source

to1 :: forall (a :: k). Rep1 Last a -> Last a Source

type Rep (Last a)
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
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
Instances details
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 :: forall r r'. (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)

Since: base-4.9.0.0

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

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 WrappedMonoid :: k -> Type Source

#### Methods

from1 :: forall (a :: k). WrappedMonoid a -> Rep1 WrappedMonoid a Source

to1 :: forall (a :: k). Rep1 WrappedMonoid a -> WrappedMonoid a Source

type Rep (WrappedMonoid m)
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
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
Instances details

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

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

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 :: forall r r'. (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)

Since: base-4.7.0.0

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

Since: base-4.7.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep1 Dual :: k -> Type Source

#### Methods

from1 :: forall (a :: k). Dual a -> Rep1 Dual a Source

to1 :: forall (a :: k). Rep1 Dual a -> Dual a Source

type Rep (Dual a)
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
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
Instances details
Generic (Endo a)

Since: base-4.7.0.0

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)
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
Instances details
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 :: forall r r'. (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

Since: base-4.7.0.0

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
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
Instances details
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 :: forall r r'. (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

Since: base-4.7.0.0

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
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
Instances details

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

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

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 :: forall r r'. (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)

Since: base-4.7.0.0

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

Since: base-4.7.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep1 Sum :: k -> Type Source

#### Methods

from1 :: forall (a :: k). Sum a -> Rep1 Sum a Source

to1 :: forall (a :: k). Rep1 Sum a -> Sum a Source

type Rep (Sum a)
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
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
Instances details

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

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 :: forall r r'. (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)

Since: base-4.7.0.0

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

Since: base-4.7.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep1 Product :: k -> Type Source

#### Methods

from1 :: forall (a :: k). Product a -> Rep1 Product a Source

to1 :: forall (a :: k). Rep1 Product a -> Product a Source

type Rep (Product a)
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
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
Instances details

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

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 :: forall r r'. (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)

Since: base-4.9.0.0

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

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Associated Types

type Rep1 Option :: k -> Type Source

#### Methods

from1 :: forall (a :: k). Option a -> Rep1 Option a Source

to1 :: forall (a :: k). Rep1 Option a -> Option a Source

type Rep (Option a)
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
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
Instances details
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

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)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Associated Types

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

#### Methods

from1 :: forall (a0 :: k). Arg a a0 -> Rep1 (Arg a) a0 Source

to1 :: forall (a0 :: k). 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 :: forall r r'. (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)

Since: base-4.9.0.0

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)
Instance details

Defined in Data.Semigroup

type Rep (Arg a b)
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