accelerate-1.2.0.0: An embedded language for accelerated array processing

Copyright[2016..2017] Trevor L. McDonell
LicenseBSD3
MaintainerTrevor L. McDonell <tmcdonell@cse.unsw.edu.au>
Stabilityexperimental
Portabilitynon-portable (GHC extensions)
Safe HaskellNone
LanguageHaskell2010

Data.Array.Accelerate.Data.Monoid

Contents

Description

Monoid instances for Accelerate

Since: 1.2.0.0

Synopsis

Documentation

class Semigroup a => Monoid a where #

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

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 newtypes and make those instances of Monoid, e.g. Sum and Product.

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

Minimal complete definition

mempty

Methods

mempty :: a #

Identity of mappend

mappend :: a -> a -> a #

An associative operation

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

mconcat :: [a] -> a #

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
Monoid Ordering

Since: 2.1

Instance details
Monoid ()

Since: 2.1

Instance details

Methods

mempty :: () #

mappend :: () -> () -> () #

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

Monoid Doc 
Instance details

Methods

mempty :: Doc #

mappend :: Doc -> Doc -> Doc #

mconcat :: [Doc] -> Doc #

Monoid All

Since: 2.1

Instance details

Methods

mempty :: All #

mappend :: All -> All -> All #

mconcat :: [All] -> All #

Monoid Any

Since: 2.1

Instance details

Methods

mempty :: Any #

mappend :: Any -> Any -> Any #

mconcat :: [Any] -> Any #

Monoid String 
Instance details
Monoid ShortByteString 
Instance details
Monoid ByteString 
Instance details
Monoid ByteString 
Instance details
Monoid Builder 
Instance details
Monoid IntSet 
Instance details
Monoid ParseError 
Instance details
Monoid Completer 
Instance details
Monoid Doc 
Instance details

Methods

mempty :: Doc #

mappend :: Doc -> Doc -> Doc #

mconcat :: [Doc] -> Doc #

Monoid OptionSet

Later options override earlier ones

Instance details
Monoid Slot 
Instance details

Methods

mempty :: Slot #

mappend :: Slot -> Slot -> Slot #

mconcat :: [Slot] -> Slot #

a :=> (Monoid (Dict a)) 
Instance details

Methods

ins :: a :- Monoid (Dict a) #

() :=> (Monoid [a]) 
Instance details

Methods

ins :: () :- Monoid [a] #

() :=> (Monoid Ordering) 
Instance details

Methods

ins :: () :- Monoid Ordering #

() :=> (Monoid ()) 
Instance details

Methods

ins :: () :- Monoid () #

Monoid [a]

Since: 2.1

Instance details

Methods

mempty :: [a] #

mappend :: [a] -> [a] -> [a] #

mconcat :: [[a]] -> [a] #

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

Instance details

Methods

mempty :: Maybe a #

mappend :: Maybe a -> Maybe a -> Maybe a #

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

Monoid a => Monoid (IO a)

Since: 4.9.0.0

Instance details

Methods

mempty :: IO a #

mappend :: IO a -> IO a -> IO a #

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

(Ord a, Bounded a) => Monoid (Min a)

Since: 4.9.0.0

Instance details

Methods

mempty :: Min a #

mappend :: Min a -> Min a -> Min a #

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

(Ord a, Bounded a) => Monoid (Max a)

Since: 4.9.0.0

Instance details

Methods

mempty :: Max a #

mappend :: Max a -> Max a -> Max a #

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

Monoid m => Monoid (WrappedMonoid m)

Since: 4.9.0.0

Instance details
Semigroup a => Monoid (Option a)

Since: 4.9.0.0

Instance details

Methods

mempty :: Option a #

mappend :: Option a -> Option a -> Option a #

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

Monoid a => Monoid (Identity a) 
Instance details

Methods

mempty :: Identity a #

mappend :: Identity a -> Identity a -> Identity a #

mconcat :: [Identity a] -> Identity a #

Monoid (First a)

Since: 2.1

Instance details

Methods

mempty :: First a #

mappend :: First a -> First a -> First a #

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

Monoid (Last a)

Since: 2.1

Instance details

Methods

mempty :: Last a #

mappend :: Last a -> Last a -> Last a #

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

Monoid a => Monoid (Dual a)

Since: 2.1

Instance details

Methods

mempty :: Dual a #

mappend :: Dual a -> Dual a -> Dual a #

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

Monoid (Endo a)

Since: 2.1

Instance details

Methods

mempty :: Endo a #

mappend :: Endo a -> Endo a -> Endo a #

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

Num a => Monoid (Sum a)

Since: 2.1

Instance details

Methods

mempty :: Sum a #

mappend :: Sum a -> Sum a -> Sum a #

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

Num a => Monoid (Product a)

Since: 2.1

Instance details

Methods

mempty :: Product a #

mappend :: Product a -> Product a -> Product a #

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

Monoid a => Monoid (Down a)

Since: 4.11.0.0

Instance details

Methods

mempty :: Down a #

mappend :: Down a -> Down a -> Down a #

mconcat :: [Down a] -> Down a #

PrimType ty => Monoid (UArray ty) 
Instance details

Methods

mempty :: UArray ty #

mappend :: UArray ty -> UArray ty -> UArray ty #

mconcat :: [UArray ty] -> UArray ty #

PrimType ty => Monoid (Block ty) 
Instance details

Methods

mempty :: Block ty #

mappend :: Block ty -> Block ty -> Block ty #

mconcat :: [Block ty] -> Block ty #

Monoid (CountOf ty) 
Instance details

Methods

mempty :: CountOf ty #

mappend :: CountOf ty -> CountOf ty -> CountOf ty #

mconcat :: [CountOf ty] -> CountOf ty #

Num a => Monoid (Colour a) 
Instance details

Methods

mempty :: Colour a #

mappend :: Colour a -> Colour a -> Colour a #

mconcat :: [Colour a] -> Colour a #

Num a => Monoid (AlphaColour a) 
Instance details
a => Monoid (Dict a) 
Instance details

Methods

mempty :: Dict a #

mappend :: Dict a -> Dict a -> Dict a #

mconcat :: [Dict a] -> Dict a #

Monoid (IntMap a) 
Instance details

Methods

mempty :: IntMap a #

mappend :: IntMap a -> IntMap a -> IntMap a #

mconcat :: [IntMap a] -> IntMap a #

Monoid (Seq a) 
Instance details

Methods

mempty :: Seq a #

mappend :: Seq a -> Seq a -> Seq a #

mconcat :: [Seq a] -> Seq a #

Ord a => Monoid (Set a) 
Instance details

Methods

mempty :: Set a #

mappend :: Set a -> Set a -> Set a #

mconcat :: [Set a] -> Set a #

Monoid (Predicate a) 
Instance details
Monoid (Comparison a) 
Instance details
Monoid (Equivalence a) 
Instance details
Prim a => Monoid (Vector a) 
Instance details

Methods

mempty :: Vector a #

mappend :: Vector a -> Vector a -> Vector a #

mconcat :: [Vector a] -> Vector a #

Storable a => Monoid (Vector a) 
Instance details

Methods

mempty :: Vector a #

mappend :: Vector a -> Vector a -> Vector a #

mconcat :: [Vector a] -> Vector a #

(Hashable a, Eq a) => Monoid (HashSet a) 
Instance details

Methods

mempty :: HashSet a #

mappend :: HashSet a -> HashSet a -> HashSet a #

mconcat :: [HashSet a] -> HashSet a #

Monoid (Vector a) 
Instance details

Methods

mempty :: Vector a #

mappend :: Vector a -> Vector a -> Vector a #

mconcat :: [Vector a] -> Vector a #

Ord a => Monoid (Min a) 
Instance details

Methods

mempty :: Min a #

mappend :: Min a -> Min a -> Min a #

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

Ord a => Monoid (Max a) 
Instance details

Methods

mempty :: Max a #

mappend :: Max a -> Max a -> Max a #

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

Monoid (Leftmost a) 
Instance details

Methods

mempty :: Leftmost a #

mappend :: Leftmost a -> Leftmost a -> Leftmost a #

mconcat :: [Leftmost a] -> Leftmost a #

Monoid (Rightmost a) 
Instance details
Monoid (Doc a) 
Instance details

Methods

mempty :: Doc a #

mappend :: Doc a -> Doc a -> Doc a #

mconcat :: [Doc a] -> Doc a #

Monoid (Array a) 
Instance details

Methods

mempty :: Array a #

mappend :: Array a -> Array a -> Array a #

mconcat :: [Array a] -> Array a #

Monoid (Doc a) 
Instance details

Methods

mempty :: Doc a #

mappend :: Doc a -> Doc a -> Doc a #

mconcat :: [Doc a] -> Doc a #

Monoid (MergeSet a) 
Instance details

Methods

mempty :: MergeSet a #

mappend :: MergeSet a -> MergeSet a -> MergeSet a #

mconcat :: [MergeSet a] -> MergeSet a #

(Monoid (Exp a), Elt a) => Monoid (Exp (Maybe a)) # 
Instance details

Methods

mempty :: Exp (Maybe a) #

mappend :: Exp (Maybe a) -> Exp (Maybe a) -> Exp (Maybe a) #

mconcat :: [Exp (Maybe a)] -> Exp (Maybe a) #

Monoid (Exp ()) # 
Instance details

Methods

mempty :: Exp () #

mappend :: Exp () -> Exp () -> Exp () #

mconcat :: [Exp ()] -> Exp () #

(Elt a, Elt b, Monoid (Exp a), Monoid (Exp b)) => Monoid (Exp (a, b)) # 
Instance details

Methods

mempty :: Exp (a, b) #

mappend :: Exp (a, b) -> Exp (a, b) -> Exp (a, b) #

mconcat :: [Exp (a, b)] -> Exp (a, b) #

(Elt a, Elt b, Elt c, Monoid (Exp a), Monoid (Exp b), Monoid (Exp c)) => Monoid (Exp (a, b, c)) # 
Instance details

Methods

mempty :: Exp (a, b, c) #

mappend :: Exp (a, b, c) -> Exp (a, b, c) -> Exp (a, b, c) #

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

(Elt a, Elt b, Elt c, Elt d, Monoid (Exp a), Monoid (Exp b), Monoid (Exp c), Monoid (Exp d)) => Monoid (Exp (a, b, c, d)) # 
Instance details

Methods

mempty :: Exp (a, b, c, d) #

mappend :: Exp (a, b, c, d) -> Exp (a, b, c, d) -> Exp (a, b, c, d) #

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

(Elt a, Elt b, Elt c, Elt d, Elt e, Monoid (Exp a), Monoid (Exp b), Monoid (Exp c), Monoid (Exp d), Monoid (Exp e)) => Monoid (Exp (a, b, c, d, e)) # 
Instance details

Methods

mempty :: Exp (a, b, c, d, e) #

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

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

(Ord a, Bounded a) => Monoid (Exp (Min a)) # 
Instance details

Methods

mempty :: Exp (Min a) #

mappend :: Exp (Min a) -> Exp (Min a) -> Exp (Min a) #

mconcat :: [Exp (Min a)] -> Exp (Min a) #

(Ord a, Bounded a) => Monoid (Exp (Max a)) # 
Instance details

Methods

mempty :: Exp (Max a) #

mappend :: Exp (Max a) -> Exp (Max a) -> Exp (Max a) #

mconcat :: [Exp (Max a)] -> Exp (Max a) #

Num a => Monoid (Exp (Sum a)) # 
Instance details

Methods

mempty :: Exp (Sum a) #

mappend :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

mconcat :: [Exp (Sum a)] -> Exp (Sum a) #

Num a => Monoid (Exp (Product a)) # 
Instance details

Methods

mempty :: Exp (Product a) #

mappend :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

mconcat :: [Exp (Product a)] -> Exp (Product a) #

Class (Semigroup a) (Monoid a) 
Instance details

Methods

cls :: Monoid a :- Semigroup a #

(Monoid a) :=> (Monoid (Maybe a)) 
Instance details

Methods

ins :: Monoid a :- Monoid (Maybe a) #

(Monoid a) :=> (Monoid (Const a b)) 
Instance details

Methods

ins :: Monoid a :- Monoid (Const a b) #

(Monoid a) :=> (Monoid (Identity a)) 
Instance details

Methods

ins :: Monoid a :- Monoid (Identity a) #

(Monoid a) :=> (Monoid (IO a)) 
Instance details

Methods

ins :: Monoid a :- Monoid (IO a) #

(Monoid a) :=> (Applicative ((,) a)) 
Instance details

Methods

ins :: Monoid a :- Applicative ((,) a) #

(Monoid a) :=> (Applicative (Const a :: * -> *)) 
Instance details

Methods

ins :: Monoid a :- Applicative (Const a) #

Monoid b => Monoid (a -> b)

Since: 2.1

Instance details

Methods

mempty :: a -> b #

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

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

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

Since: 2.1

Instance details

Methods

mempty :: (a, b) #

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

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

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

Methods

mempty :: Op a b #

mappend :: Op a b -> Op a b -> Op a b #

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

Monoid (Proxy s)

Since: 4.7.0.0

Instance details

Methods

mempty :: Proxy s #

mappend :: Proxy s -> Proxy s -> Proxy s #

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

Ord k => Monoid (Map k v) 
Instance details

Methods

mempty :: Map k v #

mappend :: Map k v -> Map k v -> Map k v #

mconcat :: [Map k v] -> Map k v #

(Monad m, Monoid a) => Monoid (GenT m a) 
Instance details

Methods

mempty :: GenT m a #

mappend :: GenT m a -> GenT m a -> GenT m a #

mconcat :: [GenT m a] -> GenT m a #

(Eq k, Hashable k) => Monoid (HashMap k v) 
Instance details

Methods

mempty :: HashMap k v #

mappend :: HashMap k v -> HashMap k v -> HashMap k v #

mconcat :: [HashMap k v] -> HashMap k v #

Monoid (ReifiedFold s a) 
Instance details

Methods

mempty :: ReifiedFold s a #

mappend :: ReifiedFold s a -> ReifiedFold s a -> ReifiedFold s a #

mconcat :: [ReifiedFold s a] -> ReifiedFold s a #

Monoid (Deepening i a)

This is an illegal Monoid.

Instance details

Methods

mempty :: Deepening i a #

mappend :: Deepening i a -> Deepening i a -> Deepening i a #

mconcat :: [Deepening i a] -> Deepening i a #

Monoid (f a) => Monoid (Indexing f a)
>>> "cat" ^@.. (folded <> folded)
[(0,'c'),(1,'a'),(2,'t'),(0,'c'),(1,'a'),(2,'t')]
>>> "cat" ^@.. indexing (folded <> folded)
[(0,'c'),(1,'a'),(2,'t'),(3,'c'),(4,'a'),(5,'t')]
Instance details

Methods

mempty :: Indexing f a #

mappend :: Indexing f a -> Indexing f a -> Indexing f a #

mconcat :: [Indexing f a] -> Indexing f a #

(Contravariant f, Applicative f) => Monoid (Folding f a) 
Instance details

Methods

mempty :: Folding f a #

mappend :: Folding f a -> Folding f a -> Folding f a #

mconcat :: [Folding f a] -> Folding f a #

Applicative f => Monoid (Traversed a f) 
Instance details

Methods

mempty :: Traversed a f #

mappend :: Traversed a f -> Traversed a f -> Traversed a f #

mconcat :: [Traversed a f] -> Traversed a f #

(Apply f, Applicative f) => Monoid (TraversedF a f) 
Instance details

Methods

mempty :: TraversedF a f #

mappend :: TraversedF a f -> TraversedF a f -> TraversedF a f #

mconcat :: [TraversedF a f] -> TraversedF a f #

Monad m => Monoid (Sequenced a m) 
Instance details

Methods

mempty :: Sequenced a m #

mappend :: Sequenced a m -> Sequenced a m -> Sequenced a m #

mconcat :: [Sequenced a m] -> Sequenced a m #

(Monoid a, Monoid b) :=> (Monoid (a, b)) 
Instance details

Methods

ins :: (Monoid a, Monoid b) :- Monoid (a, b) #

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

Since: 2.1

Instance details

Methods

mempty :: (a, b, c) #

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

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

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

Methods

mempty :: Const a b #

mappend :: Const a b -> Const a b -> Const a b #

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

Alternative f => Monoid (Alt f a)

Since: 4.8.0.0

Instance details

Methods

mempty :: Alt f a #

mappend :: Alt f a -> Alt f a -> Alt f a #

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

Monoid (ReifiedIndexedFold i s a) 
Instance details
Reifies s (ReifiedMonoid a) => Monoid (ReflectedMonoid a s) 
Instance details
(Semigroup a, Monoid a) => Monoid (Tagged s a) 
Instance details

Methods

mempty :: Tagged s a #

mappend :: Tagged s a -> Tagged s a -> Tagged s a #

mconcat :: [Tagged s a] -> Tagged s a #

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

Since: 2.1

Instance details

Methods

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

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

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

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

Since: 2.1

Instance details

Methods

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

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

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

Contravariant g => Monoid (BazaarT p g a b t) 
Instance details

Methods

mempty :: BazaarT p g a b t #

mappend :: BazaarT p g a b t -> BazaarT p g a b t -> BazaarT p g a b t #

mconcat :: [BazaarT p g a b t] -> BazaarT p g a b t #

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

An associative operation.

newtype Sum a #

Monoid under addition.

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

Constructors

Sum 

Fields

Instances
Monad Sum

Since: 4.8.0.0

Instance details

Methods

(>>=) :: Sum a -> (a -> Sum b) -> Sum b #

(>>) :: Sum a -> Sum b -> Sum b #

return :: a -> Sum a #

fail :: String -> Sum a #

Functor Sum

Since: 4.8.0.0

Instance details

Methods

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

(<$) :: a -> Sum b -> Sum a #

MonadFix Sum

Since: 4.8.0.0

Instance details

Methods

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

Applicative Sum

Since: 4.8.0.0

Instance details

Methods

pure :: a -> Sum a #

(<*>) :: Sum (a -> b) -> Sum a -> Sum b #

liftA2 :: (a -> b -> c) -> Sum a -> Sum b -> Sum c #

(*>) :: Sum a -> Sum b -> Sum b #

(<*) :: Sum a -> Sum b -> Sum a #

Foldable Sum

Since: 4.8.0.0

Instance details

Methods

fold :: Monoid m => Sum m -> m #

foldMap :: Monoid m => (a -> m) -> Sum a -> m #

foldr :: (a -> b -> b) -> b -> Sum a -> b #

foldr' :: (a -> b -> b) -> b -> Sum a -> b #

foldl :: (b -> a -> b) -> b -> Sum a -> b #

foldl' :: (b -> a -> b) -> b -> Sum a -> b #

foldr1 :: (a -> a -> a) -> Sum a -> a #

foldl1 :: (a -> a -> a) -> Sum a -> a #

toList :: Sum a -> [a] #

null :: Sum a -> Bool #

length :: Sum a -> Int #

elem :: Eq a => a -> Sum a -> Bool #

maximum :: Ord a => Sum a -> a #

minimum :: Ord a => Sum a -> a #

sum :: Num a => Sum a -> a #

product :: Num a => Sum a -> a #

Traversable Sum

Since: 4.8.0.0

Instance details

Methods

traverse :: Applicative f => (a -> f b) -> Sum a -> f (Sum b) #

sequenceA :: Applicative f => Sum (f a) -> f (Sum a) #

mapM :: Monad m => (a -> m b) -> Sum a -> m (Sum b) #

sequence :: Monad m => Sum (m a) -> m (Sum a) #

Representable Sum 
Instance details

Associated Types

type Rep Sum :: * #

Methods

tabulate :: (Rep Sum -> a) -> Sum a #

index :: Sum a -> Rep Sum -> a #

NFData1 Sum

Since: 1.4.3.0

Instance details

Methods

liftRnf :: (a -> ()) -> Sum a -> () #

Functor Sum Source # 
Instance details

Methods

fmap :: (Elt a, Elt b, Elt (Sum a), Elt (Sum b)) => (Exp a -> Exp b) -> Exp (Sum a) -> Exp (Sum b) Source #

(<$) :: (Elt a, Elt b, Elt (Sum a), Elt (Sum b)) => Exp a -> Exp (Sum b) -> Exp (Sum a) Source #

Elt a => Unlift Exp (Sum (Exp a)) Source # 
Instance details

Methods

unlift :: Exp (Plain (Sum (Exp a))) -> Sum (Exp a) Source #

(Lift Exp a, Elt (Plain a)) => Lift Exp (Sum a) Source # 
Instance details

Associated Types

type Plain (Sum a) :: * Source #

Methods

lift :: Sum a -> Exp (Plain (Sum a)) Source #

Bounded a => Bounded (Sum a) 
Instance details

Methods

minBound :: Sum a #

maxBound :: Sum a #

Bounded a => Bounded (Exp (Sum a)) # 
Instance details

Methods

minBound :: Exp (Sum a) #

maxBound :: Exp (Sum a) #

Eq a => Eq (Sum a) 
Instance details

Methods

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

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

Num a => Num (Sum a) 
Instance details

Methods

(+) :: Sum a -> Sum a -> Sum a #

(-) :: Sum a -> Sum a -> Sum a #

(*) :: Sum a -> Sum a -> Sum a #

negate :: Sum a -> Sum a #

abs :: Sum a -> Sum a #

signum :: Sum a -> Sum a #

fromInteger :: Integer -> Sum a #

Num a => Num (Exp (Sum a)) # 
Instance details

Methods

(+) :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

(-) :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

(*) :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

negate :: Exp (Sum a) -> Exp (Sum a) #

abs :: Exp (Sum a) -> Exp (Sum a) #

signum :: Exp (Sum a) -> Exp (Sum a) #

fromInteger :: Integer -> Exp (Sum a) #

Ord a => Ord (Sum a) 
Instance details

Methods

compare :: Sum a -> Sum a -> Ordering #

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

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

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

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

max :: Sum a -> Sum a -> Sum a #

min :: Sum a -> Sum a -> Sum a #

Read a => Read (Sum a) 
Instance details
Show a => Show (Sum a) 
Instance details

Methods

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

show :: Sum a -> String #

showList :: [Sum a] -> ShowS #

Generic (Sum a) 
Instance details

Associated Types

type Rep (Sum a) :: * -> * #

Methods

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

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

Num a => Semigroup (Sum a)

Since: 4.9.0.0

Instance details

Methods

(<>) :: Sum a -> Sum a -> Sum a #

sconcat :: NonEmpty (Sum a) -> Sum a #

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

Num a => Semigroup (Exp (Sum a)) #

Since: 1.2.0.0

Instance details

Methods

(<>) :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

sconcat :: NonEmpty (Exp (Sum a)) -> Exp (Sum a) #

stimes :: Integral b => b -> Exp (Sum a) -> Exp (Sum a) #

Num a => Monoid (Sum a)

Since: 2.1

Instance details

Methods

mempty :: Sum a #

mappend :: Sum a -> Sum a -> Sum a #

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

Num a => Monoid (Exp (Sum a)) # 
Instance details

Methods

mempty :: Exp (Sum a) #

mappend :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

mconcat :: [Exp (Sum a)] -> Exp (Sum a) #

NFData a => NFData (Sum a)

Since: 1.4.0.0

Instance details

Methods

rnf :: Sum a -> () #

Wrapped (Sum a) 
Instance details

Associated Types

type Unwrapped (Sum a) :: * #

Methods

_Wrapped' :: Iso' (Sum a) (Unwrapped (Sum a)) #

(Eq a, Num a) => AsEmpty (Sum a) 
Instance details

Methods

_Empty :: Prism' (Sum a) () #

Elt a => Elt (Sum a) Source # 
Instance details

Methods

eltType :: Sum a -> TupleType (EltRepr (Sum a))

fromElt :: Sum a -> EltRepr (Sum a)

toElt :: EltRepr (Sum a) -> Sum a

Eq a => Eq (Sum a) Source # 
Instance details

Methods

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

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

Ord a => Ord (Sum a) Source # 
Instance details

Methods

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

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

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

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

min :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) Source #

max :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) Source #

compare :: Exp (Sum a) -> Exp (Sum a) -> Exp Ordering Source #

Generic1 Sum 
Instance details

Associated Types

type Rep1 Sum :: k -> * #

Methods

from1 :: Sum a -> Rep1 Sum a #

to1 :: Rep1 Sum a -> Sum a #

t ~ Sum b => Rewrapped (Sum a) t 
Instance details
type Rep Sum 
Instance details
type Rep Sum = ()
type Rep (Sum a) 
Instance details
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 Unwrapped (Sum a) 
Instance details
type Unwrapped (Sum a) = a
type Plain (Sum a) Source # 
Instance details
type Plain (Sum a) = Sum (Plain a)
type Rep1 Sum 
Instance details
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 #

Monoid under multiplication.

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

Constructors

Product 

Fields

Instances
Monad Product

Since: 4.8.0.0

Instance details

Methods

(>>=) :: Product a -> (a -> Product b) -> Product b #

(>>) :: Product a -> Product b -> Product b #

return :: a -> Product a #

fail :: String -> Product a #

Functor Product

Since: 4.8.0.0

Instance details

Methods

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

(<$) :: a -> Product b -> Product a #

MonadFix Product

Since: 4.8.0.0

Instance details

Methods

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

Applicative Product

Since: 4.8.0.0

Instance details

Methods

pure :: a -> Product a #

(<*>) :: Product (a -> b) -> Product a -> Product b #

liftA2 :: (a -> b -> c) -> Product a -> Product b -> Product c #

(*>) :: Product a -> Product b -> Product b #

(<*) :: Product a -> Product b -> Product a #

Foldable Product

Since: 4.8.0.0

Instance details

Methods

fold :: Monoid m => Product m -> m #

foldMap :: Monoid m => (a -> m) -> Product a -> m #

foldr :: (a -> b -> b) -> b -> Product a -> b #

foldr' :: (a -> b -> b) -> b -> Product a -> b #

foldl :: (b -> a -> b) -> b -> Product a -> b #

foldl' :: (b -> a -> b) -> b -> Product a -> b #

foldr1 :: (a -> a -> a) -> Product a -> a #

foldl1 :: (a -> a -> a) -> Product a -> a #

toList :: Product a -> [a] #

null :: Product a -> Bool #

length :: Product a -> Int #

elem :: Eq a => a -> Product a -> Bool #

maximum :: Ord a => Product a -> a #

minimum :: Ord a => Product a -> a #

sum :: Num a => Product a -> a #

product :: Num a => Product a -> a #

Traversable Product

Since: 4.8.0.0

Instance details

Methods

traverse :: Applicative f => (a -> f b) -> Product a -> f (Product b) #

sequenceA :: Applicative f => Product (f a) -> f (Product a) #

mapM :: Monad m => (a -> m b) -> Product a -> m (Product b) #

sequence :: Monad m => Product (m a) -> m (Product a) #

Representable Product 
Instance details

Associated Types

type Rep Product :: * #

Methods

tabulate :: (Rep Product -> a) -> Product a #

index :: Product a -> Rep Product -> a #

NFData1 Product

Since: 1.4.3.0

Instance details

Methods

liftRnf :: (a -> ()) -> Product a -> () #

Functor Product Source # 
Instance details

Methods

fmap :: (Elt a, Elt b, Elt (Product a), Elt (Product b)) => (Exp a -> Exp b) -> Exp (Product a) -> Exp (Product b) Source #

(<$) :: (Elt a, Elt b, Elt (Product a), Elt (Product b)) => Exp a -> Exp (Product b) -> Exp (Product a) Source #

Elt a => Unlift Exp (Product (Exp a)) Source # 
Instance details

Methods

unlift :: Exp (Plain (Product (Exp a))) -> Product (Exp a) Source #

(Lift Exp a, Elt (Plain a)) => Lift Exp (Product a) Source # 
Instance details

Associated Types

type Plain (Product a) :: * Source #

Methods

lift :: Product a -> Exp (Plain (Product a)) Source #

Bounded a => Bounded (Product a) 
Instance details
Bounded a => Bounded (Exp (Product a)) # 
Instance details

Methods

minBound :: Exp (Product a) #

maxBound :: Exp (Product a) #

Eq a => Eq (Product a) 
Instance details

Methods

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

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

Num a => Num (Product a) 
Instance details

Methods

(+) :: Product a -> Product a -> Product a #

(-) :: Product a -> Product a -> Product a #

(*) :: Product a -> Product a -> Product a #

negate :: Product a -> Product a #

abs :: Product a -> Product a #

signum :: Product a -> Product a #

fromInteger :: Integer -> Product a #

Num a => Num (Exp (Product a)) # 
Instance details

Methods

(+) :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

(-) :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

(*) :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

negate :: Exp (Product a) -> Exp (Product a) #

abs :: Exp (Product a) -> Exp (Product a) #

signum :: Exp (Product a) -> Exp (Product a) #

fromInteger :: Integer -> Exp (Product a) #

Ord a => Ord (Product a) 
Instance details

Methods

compare :: Product a -> Product a -> Ordering #

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

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

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

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

max :: Product a -> Product a -> Product a #

min :: Product a -> Product a -> Product a #

Read a => Read (Product a) 
Instance details
Show a => Show (Product a) 
Instance details

Methods

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

show :: Product a -> String #

showList :: [Product a] -> ShowS #

Generic (Product a) 
Instance details

Associated Types

type Rep (Product a) :: * -> * #

Methods

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

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

Num a => Semigroup (Product a)

Since: 4.9.0.0

Instance details

Methods

(<>) :: Product a -> Product a -> Product a #

sconcat :: NonEmpty (Product a) -> Product a #

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

Num a => Semigroup (Exp (Product a)) #

Since: 1.2.0.0

Instance details

Methods

(<>) :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

sconcat :: NonEmpty (Exp (Product a)) -> Exp (Product a) #

stimes :: Integral b => b -> Exp (Product a) -> Exp (Product a) #

Num a => Monoid (Product a)

Since: 2.1

Instance details

Methods

mempty :: Product a #

mappend :: Product a -> Product a -> Product a #

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

Num a => Monoid (Exp (Product a)) # 
Instance details

Methods

mempty :: Exp (Product a) #

mappend :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

mconcat :: [Exp (Product a)] -> Exp (Product a) #

NFData a => NFData (Product a)

Since: 1.4.0.0

Instance details

Methods

rnf :: Product a -> () #

Wrapped (Product a) 
Instance details

Associated Types

type Unwrapped (Product a) :: * #

Methods

_Wrapped' :: Iso' (Product a) (Unwrapped (Product a)) #

(Eq a, Num a) => AsEmpty (Product a) 
Instance details

Methods

_Empty :: Prism' (Product a) () #

Elt a => Elt (Product a) Source # 
Instance details

Methods

eltType :: Product a -> TupleType (EltRepr (Product a))

fromElt :: Product a -> EltRepr (Product a)

toElt :: EltRepr (Product a) -> Product a

Eq a => Eq (Product a) Source # 
Instance details

Methods

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

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

Ord a => Ord (Product a) Source # 
Instance details

Methods

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

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

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

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

min :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) Source #

max :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) Source #

compare :: Exp (Product a) -> Exp (Product a) -> Exp Ordering Source #

Generic1 Product 
Instance details

Associated Types

type Rep1 Product :: k -> * #

Methods

from1 :: Product a -> Rep1 Product a #

to1 :: Rep1 Product a -> Product a #

t ~ Product b => Rewrapped (Product a) t 
Instance details
type Rep Product 
Instance details
type Rep Product = ()
type Rep (Product a) 
Instance details
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 Unwrapped (Product a) 
Instance details
type Unwrapped (Product a) = a
type Plain (Product a) Source # 
Instance details
type Plain (Product a) = Product (Plain a)
type Rep1 Product 
Instance details
type Rep1 Product = D1 (MetaData "Product" "Data.Semigroup.Internal" "base" True) (C1 (MetaCons "Product" PrefixI True) (S1 (MetaSel (Just "getProduct") NoSourceUnpackedness NoSourceStrictness DecidedLazy) Par1))

Orphan instances

Elt a => Unlift Exp (Sum (Exp a)) Source # 
Instance details

Methods

unlift :: Exp (Plain (Sum (Exp a))) -> Sum (Exp a) Source #

Elt a => Unlift Exp (Product (Exp a)) Source # 
Instance details

Methods

unlift :: Exp (Plain (Product (Exp a))) -> Product (Exp a) Source #

(Lift Exp a, Elt (Plain a)) => Lift Exp (Sum a) Source # 
Instance details

Associated Types

type Plain (Sum a) :: * Source #

Methods

lift :: Sum a -> Exp (Plain (Sum a)) Source #

(Lift Exp a, Elt (Plain a)) => Lift Exp (Product a) Source # 
Instance details

Associated Types

type Plain (Product a) :: * Source #

Methods

lift :: Product a -> Exp (Plain (Product a)) Source #

Bounded a => Bounded (Exp (Sum a)) Source # 
Instance details

Methods

minBound :: Exp (Sum a) #

maxBound :: Exp (Sum a) #

Bounded a => Bounded (Exp (Product a)) Source # 
Instance details

Methods

minBound :: Exp (Product a) #

maxBound :: Exp (Product a) #

Num a => Num (Exp (Sum a)) Source # 
Instance details

Methods

(+) :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

(-) :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

(*) :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

negate :: Exp (Sum a) -> Exp (Sum a) #

abs :: Exp (Sum a) -> Exp (Sum a) #

signum :: Exp (Sum a) -> Exp (Sum a) #

fromInteger :: Integer -> Exp (Sum a) #

Num a => Num (Exp (Product a)) Source # 
Instance details

Methods

(+) :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

(-) :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

(*) :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

negate :: Exp (Product a) -> Exp (Product a) #

abs :: Exp (Product a) -> Exp (Product a) #

signum :: Exp (Product a) -> Exp (Product a) #

fromInteger :: Integer -> Exp (Product a) #

Num a => Semigroup (Exp (Sum a)) Source #

Since: 1.2.0.0

Instance details

Methods

(<>) :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

sconcat :: NonEmpty (Exp (Sum a)) -> Exp (Sum a) #

stimes :: Integral b => b -> Exp (Sum a) -> Exp (Sum a) #

Num a => Semigroup (Exp (Product a)) Source #

Since: 1.2.0.0

Instance details

Methods

(<>) :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

sconcat :: NonEmpty (Exp (Product a)) -> Exp (Product a) #

stimes :: Integral b => b -> Exp (Product a) -> Exp (Product a) #

Monoid (Exp ()) Source # 
Instance details

Methods

mempty :: Exp () #

mappend :: Exp () -> Exp () -> Exp () #

mconcat :: [Exp ()] -> Exp () #

(Elt a, Elt b, Monoid (Exp a), Monoid (Exp b)) => Monoid (Exp (a, b)) Source # 
Instance details

Methods

mempty :: Exp (a, b) #

mappend :: Exp (a, b) -> Exp (a, b) -> Exp (a, b) #

mconcat :: [Exp (a, b)] -> Exp (a, b) #

(Elt a, Elt b, Elt c, Monoid (Exp a), Monoid (Exp b), Monoid (Exp c)) => Monoid (Exp (a, b, c)) Source # 
Instance details

Methods

mempty :: Exp (a, b, c) #

mappend :: Exp (a, b, c) -> Exp (a, b, c) -> Exp (a, b, c) #

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

(Elt a, Elt b, Elt c, Elt d, Monoid (Exp a), Monoid (Exp b), Monoid (Exp c), Monoid (Exp d)) => Monoid (Exp (a, b, c, d)) Source # 
Instance details

Methods

mempty :: Exp (a, b, c, d) #

mappend :: Exp (a, b, c, d) -> Exp (a, b, c, d) -> Exp (a, b, c, d) #

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

(Elt a, Elt b, Elt c, Elt d, Elt e, Monoid (Exp a), Monoid (Exp b), Monoid (Exp c), Monoid (Exp d), Monoid (Exp e)) => Monoid (Exp (a, b, c, d, e)) Source # 
Instance details

Methods

mempty :: Exp (a, b, c, d, e) #

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

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

Num a => Monoid (Exp (Sum a)) Source # 
Instance details

Methods

mempty :: Exp (Sum a) #

mappend :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) #

mconcat :: [Exp (Sum a)] -> Exp (Sum a) #

Num a => Monoid (Exp (Product a)) Source # 
Instance details

Methods

mempty :: Exp (Product a) #

mappend :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) #

mconcat :: [Exp (Product a)] -> Exp (Product a) #

Elt a => Elt (Sum a) Source # 
Instance details

Methods

eltType :: Sum a -> TupleType (EltRepr (Sum a))

fromElt :: Sum a -> EltRepr (Sum a)

toElt :: EltRepr (Sum a) -> Sum a

Elt a => Elt (Product a) Source # 
Instance details

Methods

eltType :: Product a -> TupleType (EltRepr (Product a))

fromElt :: Product a -> EltRepr (Product a)

toElt :: EltRepr (Product a) -> Product a

Eq a => Eq (Sum a) Source # 
Instance details

Methods

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

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

Eq a => Eq (Product a) Source # 
Instance details

Methods

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

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

Ord a => Ord (Sum a) Source # 
Instance details

Methods

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

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

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

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

min :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) Source #

max :: Exp (Sum a) -> Exp (Sum a) -> Exp (Sum a) Source #

compare :: Exp (Sum a) -> Exp (Sum a) -> Exp Ordering Source #

Ord a => Ord (Product a) Source # 
Instance details

Methods

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

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

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

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

min :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) Source #

max :: Exp (Product a) -> Exp (Product a) -> Exp (Product a) Source #

compare :: Exp (Product a) -> Exp (Product a) -> Exp Ordering Source #