# Data.Monoid

Copyright (c) Andy Gill 2001(c) Oregon Graduate Institute of Science and Technology 2001 BSD-style (see the file libraries/base/LICENSE) [email protected] experimental portable Trustworthy Haskell2010

#### Description

A type `a` is a `Monoid` if it provides an associative function (`<>`) that lets you combine any two values of type `a` into one, and a neutral element (`mempty`) such that

`a <> mempty == mempty <> a == a`

A `Monoid` is a `Semigroup` with the added requirement of a neutral element. Thus any `Monoid` is a `Semigroup`, but not the other way around.

##### Examples
Expand

The `Sum` monoid is defined by the numerical addition operator and `0` as neutral element:

```>>> mempty :: Sum Int
Sum 0
>>> Sum 1 <> Sum 2 <> Sum 3 <> Sum 4 :: Sum Int
Sum {getSum = 10}
```

We can combine multiple values in a list into a single value using the `mconcat` function. Note that we have to specify the type here since `Int` is a monoid under several different operations:

```>>> mconcat [1,2,3,4] :: Sum Int
Sum {getSum = 10}
>>> mconcat [] :: Sum Int
Sum {getSum = 0}
```

Another valid monoid instance of `Int` is `Product` It is defined by multiplication and `1` as neutral element:

```>>> Product 1 <> Product 2 <> Product 3 <> Product 4 :: Product Int
Product {getProduct = 24}
>>> mconcat [1,2,3,4] :: Product Int
Product {getProduct = 24}
>>> mconcat [] :: Product Int
Product {getProduct = 1}
```

## Monoid typeclass

class Semigroup a => Monoid a where Source

The class of monoids (types with an associative binary operation that has an identity). Instances should satisfy the following:

Right identity
`x <> mempty = x`
Left identity
`mempty <> x = x`
Associativity
`x <> (y <> z) = (x <> y) <> z` (`Semigroup` law)
Concatenation
`mconcat = foldr (<>) mempty`

The method names refer to the monoid of lists under concatenation, but there are many other instances.

Some types can be viewed as a monoid in more than one way, e.g. both addition and multiplication on numbers. In such cases we often define `newtype`s and make those instances of `Monoid`, e.g. `Sum` and `Product`.

NOTE: `Semigroup` is a superclass of `Monoid` since base-4.11.0.0.

mempty

#### Methods

mempty :: a Source

Identity of `mappend`

mappend :: a -> a -> a Source

An associative operation

NOTE: This method is redundant and has the default implementation `mappend = (<>)` since base-4.11.0.0.

mconcat :: [a] -> a Source

Fold a list using the monoid.

For most types, the default definition for `mconcat` will be used, but the function is included in the class definition so that an optimized version can be provided for specific types.

##### Instances
Instances details
Monoid Ordering

Since: base-2.1

Instance details

Defined in GHC.Base

#### Methods

mconcat :: [Ordering] -> Ordering Source

Monoid ()

Since: base-2.1

Instance details

Defined in GHC.Base

#### Methods

mempty :: () Source

mappend :: () -> () -> () Source

mconcat :: [()] -> () Source

Monoid Any

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mappend :: Any -> Any -> Any Source

mconcat :: [Any] -> Any Source

Monoid All

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mappend :: All -> All -> All Source

mconcat :: [All] -> All Source

`mappend` takes the longer of two lifetimes.

Since: base-4.8.0.0

Instance details

Defined in GHC.Event.Internal

#### Methods

Monoid Event

Since: base-4.4.0.0

Instance details

Defined in GHC.Event.Internal

#### Methods

mconcat :: [Event] -> Event Source

Monoid [a]

Since: base-2.1

Instance details

Defined in GHC.Base

#### Methods

mempty :: [a] Source

mappend :: [a] -> [a] -> [a] Source

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

Semigroup a => Monoid (Maybe a)

Lift a semigroup into `Maybe` forming a `Monoid` according to http://en.wikipedia.org/wiki/Monoid: "Any semigroup `S` may be turned into a monoid simply by adjoining an element `e` not in `S` and defining `e*e = e` and `e*s = s = s*e` for all `s ∈ S`."

Since 4.11.0: constraint on inner `a` value generalised from `Monoid` to `Semigroup`.

Since: base-2.1

Instance details

Defined in GHC.Base

#### Methods

mappend :: Maybe a -> Maybe a -> Maybe a Source

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

Monoid a => Monoid (IO a)

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

#### Methods

mappend :: IO a -> IO a -> IO a Source

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

Monoid p => Monoid (Par1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

mappend :: Par1 p -> Par1 p -> Par1 p Source

mconcat :: [Par1 p] -> Par1 p Source

Monoid a => Monoid (Down a)

Since: base-4.11.0.0

Instance details

Defined in Data.Ord

#### Methods

mappend :: Down a -> Down a -> Down a Source

mconcat :: [Down a] -> Down 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

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

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

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

Monoid (Last a)

Since: base-2.1

Instance details

Defined in Data.Monoid

#### Methods

mappend :: Last a -> Last a -> Last a Source

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

Monoid (First a)

Since: base-2.1

Instance details

Defined in Data.Monoid

#### Methods

mappend :: First a -> First a -> First a Source

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

Monoid a => Monoid (Identity a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

#### Methods

mappend :: Identity a -> Identity a -> Identity a Source

mconcat :: [Identity a] -> Identity 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

Monoid m => Monoid (WrappedMonoid m)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

#### Methods

mconcat :: [WrappedMonoid m] -> WrappedMonoid m 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

(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

Monoid (Equivalence a)
Instance details

Defined in Data.Functor.Contravariant

#### Methods

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

Monoid (Comparison a)
Instance details

Defined in Data.Functor.Contravariant

#### Methods

mappend :: Comparison a -> Comparison a -> Comparison a Source

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

Monoid (Predicate a)
Instance details

Defined in Data.Functor.Contravariant

#### Methods

mappend :: Predicate a -> Predicate a -> Predicate a Source

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

Monoid b => Monoid (a -> b)

Since: base-2.1

Instance details

Defined in GHC.Base

#### Methods

mempty :: a -> b Source

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

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

Monoid (U1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

mappend :: U1 p -> U1 p -> U1 p Source

mconcat :: [U1 p] -> U1 p Source

(Monoid a, Monoid b) => Monoid (a, b)

Since: base-2.1

Instance details

Defined in GHC.Base

#### Methods

mempty :: (a, b) Source

mappend :: (a, b) -> (a, b) -> (a, b) Source

mconcat :: [(a, b)] -> (a, b) Source

Monoid a => Monoid (ST s a)

Since: base-4.11.0.0

Instance details

Defined in GHC.ST

#### Methods

mempty :: ST s a Source

mappend :: ST s a -> ST s a -> ST s a Source

mconcat :: [ST s a] -> ST s a Source

Monoid (Proxy s)

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

#### Methods

mappend :: Proxy s -> Proxy s -> Proxy s Source

mconcat :: [Proxy s] -> Proxy s Source

Monoid a => Monoid (Op a b)
Instance details

Defined in Data.Functor.Contravariant

#### Methods

mempty :: Op a b Source

mappend :: Op a b -> Op a b -> Op a b Source

mconcat :: [Op a b] -> Op a b Source

Monoid (f p) => Monoid (Rec1 f p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

mempty :: Rec1 f p Source

mappend :: Rec1 f p -> Rec1 f p -> Rec1 f p Source

mconcat :: [Rec1 f p] -> Rec1 f p Source

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

Since: base-2.1

Instance details

Defined in GHC.Base

#### Methods

mempty :: (a, b, c) Source

mappend :: (a, b, c) -> (a, b, c) -> (a, b, c) Source

mconcat :: [(a, b, c)] -> (a, b, c) Source

Alternative f => Monoid (Alt f a)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mempty :: Alt f a Source

mappend :: Alt f a -> Alt f a -> Alt f a Source

mconcat :: [Alt f a] -> Alt f a Source

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

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

mempty :: Ap f a Source

mappend :: Ap f a -> Ap f a -> Ap f a Source

mconcat :: [Ap f a] -> Ap f a Source

Monoid a => Monoid (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

#### Methods

mempty :: Const a b Source

mappend :: Const a b -> Const a b -> Const a b Source

mconcat :: [Const a b] -> Const a b Source

Monoid c => Monoid (K1 i c p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

mempty :: K1 i c p Source

mappend :: K1 i c p -> K1 i c p -> K1 i c p Source

mconcat :: [K1 i c p] -> K1 i c p Source

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

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

mempty :: (f :*: g) p Source

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

mconcat :: [(f :*: g) p] -> (f :*: g) p Source

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

Since: base-2.1

Instance details

Defined in GHC.Base

#### Methods

mempty :: (a, b, c, d) Source

mappend :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Source

mconcat :: [(a, b, c, d)] -> (a, b, c, d) Source

Monoid (f p) => Monoid (M1 i c f p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

mempty :: M1 i c f p Source

mappend :: M1 i c f p -> M1 i c f p -> M1 i c f p Source

mconcat :: [M1 i c f p] -> M1 i c f p Source

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

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

#### Methods

mempty :: (f :.: g) p Source

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

mconcat :: [(f :.: g) p] -> (f :.: g) p Source

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

Since: base-2.1

Instance details

Defined in GHC.Base

#### Methods

mempty :: (a, b, c, d, e) Source

mappend :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Source

mconcat :: [(a, b, c, d, e)] -> (a, b, c, d, e) Source

(<>) :: Semigroup a => a -> a -> a infixr 6 Source

An associative operation.

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

## Bool wrappers

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

## Num wrappers

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

## Maybe wrappers

To implement `find` or `findLast` on any `Foldable`:

```findLast :: Foldable t => (a -> Bool) -> t a -> Maybe a
findLast pred = getLast . foldMap (x -> if pred x
then Last (Just x)
else Last Nothing)
```

Much of `Map`s interface can be implemented with `alter`. Some of the rest can be implemented with a new `alterF` function and either `First` or `Last`:

```alterF :: (Functor f, Ord k) =>
(Maybe a -> f (Maybe a)) -> k -> Map k a -> f (Map k a)

instance Monoid a => Functor ((,) a)  -- from Data.Functor```
```insertLookupWithKey :: Ord k => (k -> v -> v -> v) -> k -> v
-> Map k v -> (Maybe v, Map k v)
insertLookupWithKey combine key value =
Arrow.first getFirst . alterF doChange key
where
doChange Nothing = (First Nothing, Just value)
doChange (Just oldValue) =
(First (Just oldValue),
Just (combine key value oldValue))
```

newtype First a Source

Maybe monoid returning the leftmost non-Nothing value.

`First a` is isomorphic to `Alt Maybe a`, but precedes it historically.

```>>> getFirst (First (Just "hello") <> First Nothing <> First (Just "world"))
Just "hello"
```

Use of this type is discouraged. Note the following equivalence:

`Data.Monoid.First x === Maybe (Data.Semigroup.First x)`

In addition to being equivalent in the structural sense, the two also have `Monoid` instances that behave the same. This type will be marked deprecated in GHC 8.8, and removed in GHC 8.10. Users are advised to use the variant from Data.Semigroup and wrap it in `Maybe`.

First

#### Fields

##### Instances
Instances details

Since: base-4.8.0.0

Instance details

Defined in Data.Monoid

#### 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.8.0.0

Instance details

Defined in Data.Monoid

#### Methods

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

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

Since: base-4.8.0.0

Instance details

#### Methods

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

Applicative First

Since: base-4.8.0.0

Instance details

Defined in Data.Monoid

#### 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.8.0.0

Instance details

Defined in Data.Foldable

#### 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.8.0.0

Instance details

Defined in Data.Traversable

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

Since: base-4.8.0.0

Instance details

#### Methods

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

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

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

Eq a => Eq (First a)

Since: base-2.1

Instance details

Defined in Data.Monoid

#### Methods

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

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

Data a => Data (First 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) -> 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-2.1

Instance details

Defined in Data.Monoid

#### 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-2.1

Instance details

Defined in Data.Monoid

#### Methods

Show a => Show (First a)

Since: base-2.1

Instance details

Defined in Data.Monoid

#### Methods

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

show :: First a -> String Source

showList :: [First a] -> ShowS Source

Generic (First a)

Since: base-4.7.0.0

Instance details

Defined in Data.Monoid

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

Monoid (First a)

Since: base-2.1

Instance details

Defined in Data.Monoid

#### Methods

mappend :: First a -> First a -> First a Source

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

Generic1 First

Since: base-4.7.0.0

Instance details

Defined in Data.Monoid

#### 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.Monoid

type Rep (First a) = D1 ('MetaData "First" "Data.Monoid" "base" 'True) (C1 ('MetaCons "First" 'PrefixI 'True) (S1 ('MetaSel ('Just "getFirst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe a))))
type Rep1 First
Instance details

Defined in Data.Monoid

type Rep1 First = D1 ('MetaData "First" "Data.Monoid" "base" 'True) (C1 ('MetaCons "First" 'PrefixI 'True) (S1 ('MetaSel ('Just "getFirst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 Maybe)))

newtype Last a Source

Maybe monoid returning the rightmost non-Nothing value.

`Last a` is isomorphic to `Dual (First a)`, and thus to `Dual (Alt Maybe a)`

```>>> getLast (Last (Just "hello") <> Last Nothing <> Last (Just "world"))
Just "world"
```

Use of this type is discouraged. Note the following equivalence:

`Data.Monoid.Last x === Maybe (Data.Semigroup.Last x)`

In addition to being equivalent in the structural sense, the two also have `Monoid` instances that behave the same. This type will be marked deprecated in GHC 8.8, and removed in GHC 8.10. Users are advised to use the variant from Data.Semigroup and wrap it in `Maybe`.

Last

#### Fields

##### Instances
Instances details

Since: base-4.8.0.0

Instance details

Defined in Data.Monoid

#### 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.8.0.0

Instance details

Defined in Data.Monoid

#### Methods

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

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

Since: base-4.8.0.0

Instance details

#### Methods

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

Applicative Last

Since: base-4.8.0.0

Instance details

Defined in Data.Monoid

#### 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.8.0.0

Instance details

Defined in Data.Foldable

#### 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.8.0.0

Instance details

Defined in Data.Traversable

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

Since: base-4.8.0.0

Instance details

#### Methods

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

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

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

Eq a => Eq (Last a)

Since: base-2.1

Instance details

Defined in Data.Monoid

#### Methods

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

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

Data a => Data (Last 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) -> 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-2.1

Instance details

Defined in Data.Monoid

#### 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-2.1

Instance details

Defined in Data.Monoid

#### Methods

Show a => Show (Last a)

Since: base-2.1

Instance details

Defined in Data.Monoid

#### Methods

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

show :: Last a -> String Source

showList :: [Last a] -> ShowS Source

Generic (Last a)

Since: base-4.7.0.0

Instance details

Defined in Data.Monoid

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

Monoid (Last a)

Since: base-2.1

Instance details

Defined in Data.Monoid

#### Methods

mappend :: Last a -> Last a -> Last a Source

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

Generic1 Last

Since: base-4.7.0.0

Instance details

Defined in Data.Monoid

#### 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.Monoid

type Rep (Last a) = D1 ('MetaData "Last" "Data.Monoid" "base" 'True) (C1 ('MetaCons "Last" 'PrefixI 'True) (S1 ('MetaSel ('Just "getLast") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe a))))
type Rep1 Last
Instance details

Defined in Data.Monoid

type Rep1 Last = D1 ('MetaData "Last" "Data.Monoid" "base" 'True) (C1 ('MetaCons "Last" 'PrefixI 'True) (S1 ('MetaSel ('Just "getLast") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 Maybe)))

## Alternative wrapper

newtype Alt f a Source

Monoid under `<|>`.

Since: base-4.8.0.0

Alt

#### Fields

##### Instances
Instances details
Generic1 (Alt f :: k -> Type)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep1 (Alt f) :: k -> Type Source

#### Methods

from1 :: forall (a :: k0). Alt f a -> Rep1 (Alt f) a Source

to1 :: forall (a :: k0). Rep1 (Alt f) a -> Alt f a Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(>>=) :: Alt f a -> (a -> Alt f b) -> Alt f b Source

(>>) :: Alt f a -> Alt f b -> Alt f b Source

return :: a -> Alt f a Source

Functor f => Functor (Alt f)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

fmap :: (a -> b) -> Alt f a -> Alt f b Source

(<\$) :: a -> Alt f b -> Alt f a Source

Since: base-4.8.0.0

Instance details

#### Methods

mfix :: (a -> Alt f a) -> Alt f a Source

Applicative f => Applicative (Alt f)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

pure :: a -> Alt f a Source

(<*>) :: Alt f (a -> b) -> Alt f a -> Alt f b Source

liftA2 :: (a -> b -> c) -> Alt f a -> Alt f b -> Alt f c Source

(*>) :: Alt f a -> Alt f b -> Alt f b Source

(<*) :: Alt f a -> Alt f b -> Alt f a Source

Foldable f => Foldable (Alt f)

Since: base-4.12.0.0

Instance details

Defined in Data.Foldable

#### Methods

fold :: Monoid m => Alt f m -> m Source

foldMap :: Monoid m => (a -> m) -> Alt f a -> m Source

foldMap' :: Monoid m => (a -> m) -> Alt f a -> m Source

foldr :: (a -> b -> b) -> b -> Alt f a -> b Source

foldr' :: (a -> b -> b) -> b -> Alt f a -> b Source

foldl :: (b -> a -> b) -> b -> Alt f a -> b Source

foldl' :: (b -> a -> b) -> b -> Alt f a -> b Source

foldr1 :: (a -> a -> a) -> Alt f a -> a Source

foldl1 :: (a -> a -> a) -> Alt f a -> a Source

toList :: Alt f a -> [a] Source

null :: Alt f a -> Bool Source

length :: Alt f a -> Int Source

elem :: Eq a => a -> Alt f a -> Bool Source

maximum :: Ord a => Alt f a -> a Source

minimum :: Ord a => Alt f a -> a Source

sum :: Num a => Alt f a -> a Source

product :: Num a => Alt f a -> a Source

Traversable f => Traversable (Alt f)

Since: base-4.12.0.0

Instance details

Defined in Data.Traversable

#### Methods

traverse :: Applicative f0 => (a -> f0 b) -> Alt f a -> f0 (Alt f b) Source

sequenceA :: Applicative f0 => Alt f (f0 a) -> f0 (Alt f a) Source

mapM :: Monad m => (a -> m b) -> Alt f a -> m (Alt f b) Source

sequence :: Monad m => Alt f (m a) -> m (Alt f a) Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mzero :: Alt f a Source

mplus :: Alt f a -> Alt f a -> Alt f a Source

Alternative f => Alternative (Alt f)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

empty :: Alt f a Source

(<|>) :: Alt f a -> Alt f a -> Alt f a Source

some :: Alt f a -> Alt f [a] Source

many :: Alt f a -> Alt f [a] Source

Since: base-4.8.0.0

Instance details

#### Methods

mzip :: Alt f a -> Alt f b -> Alt f (a, b) Source

mzipWith :: (a -> b -> c) -> Alt f a -> Alt f b -> Alt f c Source

munzip :: Alt f (a, b) -> (Alt f a, Alt f b) Source

Contravariant f => Contravariant (Alt f)
Instance details

Defined in Data.Functor.Contravariant

#### Methods

contramap :: (a -> b) -> Alt f b -> Alt f a Source

(>\$) :: b -> Alt f b -> Alt f a Source

Enum (f a) => Enum (Alt f a)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

succ :: Alt f a -> Alt f a Source

pred :: Alt f a -> Alt f a Source

toEnum :: Int -> Alt f a Source

fromEnum :: Alt f a -> Int Source

enumFrom :: Alt f a -> [Alt f a] Source

enumFromThen :: Alt f a -> Alt f a -> [Alt f a] Source

enumFromTo :: Alt f a -> Alt f a -> [Alt f a] Source

enumFromThenTo :: Alt f a -> Alt f a -> Alt f a -> [Alt f a] Source

Eq (f a) => Eq (Alt f a)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(==) :: Alt f a -> Alt f a -> Bool Source

(/=) :: Alt f a -> Alt f a -> Bool Source

(Data (f a), Data a, Typeable f) => Data (Alt f 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) -> Alt f a -> c (Alt f a) Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Alt f a) Source

toConstr :: Alt f a -> Constr Source

dataTypeOf :: Alt f a -> DataType Source

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Alt f a)) Source

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Alt f a)) Source

gmapT :: (forall b. Data b => b -> b) -> Alt f a -> Alt f a Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Alt f a -> r Source

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Alt f a -> r Source

gmapQ :: (forall d. Data d => d -> u) -> Alt f a -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> Alt f a -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Alt f a -> m (Alt f a) Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Alt f a -> m (Alt f a) Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Alt f a -> m (Alt f a) Source

Num (f a) => Num (Alt f a)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

(+) :: Alt f a -> Alt f a -> Alt f a Source

(-) :: Alt f a -> Alt f a -> Alt f a Source

(*) :: Alt f a -> Alt f a -> Alt f a Source

negate :: Alt f a -> Alt f a Source

abs :: Alt f a -> Alt f a Source

signum :: Alt f a -> Alt f a Source

fromInteger :: Integer -> Alt f a Source

Ord (f a) => Ord (Alt f a)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

compare :: Alt f a -> Alt f a -> Ordering Source

(<) :: Alt f a -> Alt f a -> Bool Source

(<=) :: Alt f a -> Alt f a -> Bool Source

(>) :: Alt f a -> Alt f a -> Bool Source

(>=) :: Alt f a -> Alt f a -> Bool Source

max :: Alt f a -> Alt f a -> Alt f a Source

min :: Alt f a -> Alt f a -> Alt f a Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

Show (f a) => Show (Alt f a)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

showsPrec :: Int -> Alt f a -> ShowS Source

show :: Alt f a -> String Source

showList :: [Alt f a] -> ShowS Source

Generic (Alt f a)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Associated Types

type Rep (Alt f a) :: Type -> Type Source

#### Methods

from :: Alt f a -> Rep (Alt f a) x Source

to :: Rep (Alt f a) x -> Alt f a 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

Alternative f => Monoid (Alt f a)

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

#### Methods

mempty :: Alt f a Source

mappend :: Alt f a -> Alt f a -> Alt f a Source

mconcat :: [Alt f a] -> Alt f a Source

type Rep1 (Alt f :: k -> Type)
Instance details

Defined in Data.Semigroup.Internal

type Rep1 (Alt f :: k -> Type) = D1 ('MetaData "Alt" "Data.Semigroup.Internal" "base" 'True) (C1 ('MetaCons "Alt" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAlt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 f)))
type Rep (Alt f a)
Instance details

Defined in Data.Semigroup.Internal

type Rep (Alt f a) = D1 ('MetaData "Alt" "Data.Semigroup.Internal" "base" 'True) (C1 ('MetaCons "Alt" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAlt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f a))))

## Applicative wrapper

newtype Ap f a Source

This data type witnesses the lifting of a `Monoid` into an `Applicative` pointwise.

Since: base-4.12.0.0

Ap

#### Fields

##### Instances
Instances details
Generic1 (Ap f :: k -> Type)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Associated Types

type Rep1 (Ap f) :: k -> Type Source

#### Methods

from1 :: forall (a :: k0). Ap f a -> Rep1 (Ap f) a Source

to1 :: forall (a :: k0). Rep1 (Ap f) a -> Ap f a Source

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

(>>=) :: Ap f a -> (a -> Ap f b) -> Ap f b Source

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

return :: a -> Ap f a Source

Functor f => Functor (Ap f)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

fmap :: (a -> b) -> Ap f a -> Ap f b Source

(<\$) :: a -> Ap f b -> Ap f a Source

Since: base-4.12.0.0

Instance details

#### Methods

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

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

fail :: String -> Ap f a Source

Applicative f => Applicative (Ap f)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

pure :: a -> Ap f a Source

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

liftA2 :: (a -> b -> c) -> Ap f a -> Ap f b -> Ap f c Source

(*>) :: Ap f a -> Ap f b -> Ap f b Source

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

Foldable f => Foldable (Ap f)

Since: base-4.12.0.0

Instance details

Defined in Data.Foldable

#### Methods

fold :: Monoid m => Ap f m -> m Source

foldMap :: Monoid m => (a -> m) -> Ap f a -> m Source

foldMap' :: Monoid m => (a -> m) -> Ap f a -> m Source

foldr :: (a -> b -> b) -> b -> Ap f a -> b Source

foldr' :: (a -> b -> b) -> b -> Ap f a -> b Source

foldl :: (b -> a -> b) -> b -> Ap f a -> b Source

foldl' :: (b -> a -> b) -> b -> Ap f a -> b Source

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

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

toList :: Ap f a -> [a] Source

null :: Ap f a -> Bool Source

length :: Ap f a -> Int Source

elem :: Eq a => a -> Ap f a -> Bool Source

maximum :: Ord a => Ap f a -> a Source

minimum :: Ord a => Ap f a -> a Source

sum :: Num a => Ap f a -> a Source

product :: Num a => Ap f a -> a Source

Traversable f => Traversable (Ap f)

Since: base-4.12.0.0

Instance details

Defined in Data.Traversable

#### Methods

traverse :: Applicative f0 => (a -> f0 b) -> Ap f a -> f0 (Ap f b) Source

sequenceA :: Applicative f0 => Ap f (f0 a) -> f0 (Ap f a) Source

mapM :: Monad m => (a -> m b) -> Ap f a -> m (Ap f b) Source

sequence :: Monad m => Ap f (m a) -> m (Ap f a) Source

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

mzero :: Ap f a Source

mplus :: Ap f a -> Ap f a -> Ap f a Source

Alternative f => Alternative (Ap f)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

empty :: Ap f a Source

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

some :: Ap f a -> Ap f [a] Source

many :: Ap f a -> Ap f [a] Source

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

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

minBound :: Ap f a Source

maxBound :: Ap f a Source

Enum (f a) => Enum (Ap f a)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

succ :: Ap f a -> Ap f a Source

pred :: Ap f a -> Ap f a Source

toEnum :: Int -> Ap f a Source

fromEnum :: Ap f a -> Int Source

enumFrom :: Ap f a -> [Ap f a] Source

enumFromThen :: Ap f a -> Ap f a -> [Ap f a] Source

enumFromTo :: Ap f a -> Ap f a -> [Ap f a] Source

enumFromThenTo :: Ap f a -> Ap f a -> Ap f a -> [Ap f a] Source

Eq (f a) => Eq (Ap f a)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

(==) :: Ap f a -> Ap f a -> Bool Source

(/=) :: Ap f a -> Ap f a -> Bool Source

(Data (f a), Data a, Typeable f) => Data (Ap f a)

Since: base-4.12.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) -> Ap f a -> c (Ap f a) Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Ap f a) Source

toConstr :: Ap f a -> Constr Source

dataTypeOf :: Ap f a -> DataType Source

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Ap f a)) Source

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Ap f a)) Source

gmapT :: (forall b. Data b => b -> b) -> Ap f a -> Ap f a Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Ap f a -> r Source

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Ap f a -> r Source

gmapQ :: (forall d. Data d => d -> u) -> Ap f a -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> Ap f a -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Ap f a -> m (Ap f a) Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Ap f a -> m (Ap f a) Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Ap f a -> m (Ap f a) Source

(Applicative f, Num a) => Num (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

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

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

negate :: Ap f a -> Ap f a Source

abs :: Ap f a -> Ap f a Source

signum :: Ap f a -> Ap f a Source

fromInteger :: Integer -> Ap f a Source

Ord (f a) => Ord (Ap f a)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

compare :: Ap f a -> Ap f a -> Ordering Source

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

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

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

(>=) :: Ap f a -> Ap f a -> Bool Source

max :: Ap f a -> Ap f a -> Ap f a Source

min :: Ap f a -> Ap f a -> Ap f a Source

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

Show (f a) => Show (Ap f a)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

showsPrec :: Int -> Ap f a -> ShowS Source

show :: Ap f a -> String Source

showList :: [Ap f a] -> ShowS Source

Generic (Ap f a)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Associated Types

type Rep (Ap f a) :: Type -> Type Source

#### Methods

from :: Ap f a -> Rep (Ap f a) x Source

to :: Rep (Ap f a) x -> Ap 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

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

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

#### Methods

mempty :: Ap f a Source

mappend :: Ap f a -> Ap f a -> Ap f a Source

mconcat :: [Ap f a] -> Ap f a Source

type Rep1 (Ap f :: k -> Type)
Instance details

Defined in Data.Monoid

type Rep1 (Ap f :: k -> Type) = D1 ('MetaData "Ap" "Data.Monoid" "base" 'True) (C1 ('MetaCons "Ap" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 f)))
type Rep (Ap f a)
Instance details

Defined in Data.Monoid

type Rep (Ap f a) = D1 ('MetaData "Ap" "Data.Monoid" "base" 'True) (C1 ('MetaCons "Ap" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f a))))

© The University of Glasgow and others