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