monoid-0.1.8: Monoid type classes, designed in modular way, distinguish Monoid from Mempty and Semigroup. This design allows mempty operation don't bring Semigroups related constraints until (<>) is used.

Safe HaskellNone
LanguageHaskell2010

Data.Monoids

Documentation

class Mempty a where Source #

Methods

mempty :: a Source #

mempty :: Monoid a => a Source #

Instances

Monoid a => Mempty a Source # 

Methods

mempty :: a Source #

Mempty [a] Source # 

Methods

mempty :: [a] Source #

Mempty (Maybe a) Source # 

Methods

mempty :: Maybe a Source #

Mempty (Map k a) Source # 

Methods

mempty :: Map k a Source #

type family Mempties lst :: Constraint where ... Source #

Equations

Mempties '[] = () 
Mempties (a ': as) = (Mempty a, Mempties as) 

mappend :: Semigroup a => a -> a -> a Source #

mappendWith :: Semigroup a => a -> a -> a -> a Source #

mappendBetween :: Semigroup a => a -> a -> a -> a Source #

type family Semigroups lst :: Constraint where ... Source #

Equations

Semigroups '[] = () 
Semigroups (a ': as) = (Semigroup a, Semigroups as) 

class (Mempty a, Semigroup a) => Monoid a where Source #

Methods

mconcat :: [a] -> a Source #

Instances

(Mempty a, Semigroup a) => Monoid a Source # 

Methods

mconcat :: [a] -> a Source #

mconcat' :: (Foldable t, Monoid a) => t a -> a Source #

intersperse :: Foldable f => a -> f a -> [a] Source #

intercalate :: (Monoid a, Foldable f) => a -> f a -> a Source #

intercalate' :: Monoid a => a -> [a] -> a Source #

type family Monoids lst :: Constraint where ... Source #

Equations

Monoids '[] = () 
Monoids (a ': as) = (Monoid a, Monoids as)