-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A semigroup
--
-- A semigroup is a binary associative operation
@package Semigroup
@version 0.0.2
-- | A semigroup is a binary associative operation.
module Data.Semigroup
-- | A binary operation that must satisfy associativity. Unlike a
-- Monoid, an identity in not essential.
class Semigroup a
(.++.) :: (Semigroup a) => a -> a -> a
-- | A wrapper used to construct a Semigroup from a
-- Monoid.
data Identity a
-- | A binary associative operation lifted into an applicative functor.
(<++>) :: (Applicative f, Semigroup a) => f a -> f a -> f a
instance Semigroup [a]
instance Semigroup (Last a)
instance Semigroup (First a)
instance (Semigroup a) => Semigroup (Maybe a)
instance (Num a) => Semigroup (Sum a)
instance (Num a) => Semigroup (Product a)
instance Semigroup (Endo a)
instance (Semigroup a) => Semigroup (Dual a)
instance Semigroup Any
instance Semigroup All
instance (Semigroup a, Semigroup b, Semigroup c) => Semigroup (a, b, c)
instance (Semigroup a, Semigroup b) => Semigroup (a, b)
instance (Semigroup a) => Semigroup (IO a)
instance (Semigroup b) => Semigroup (a -> b)
instance Semigroup ()
instance (Monoid a) => Semigroup (Identity a)
instance Monad Identity
instance Applicative Identity
instance Functor Identity