generic-deriving-1.11.2: Generic programming library for generalised deriving.

Safe HaskellSafe
LanguageHaskell2010

Generics.Deriving.Semigroup

Contents

Synopsis

Generic semigroup class

class GSemigroup a where Source #

Methods

gsappend :: a -> a -> a infixr 6 Source #

gsappend :: (Generic a, GSemigroup' (Rep a)) => a -> a -> a infixr 6 Source #

gstimes :: Integral b => b -> a -> a Source #

gsconcat :: NonEmpty a -> a Source #

Only available with base-4.9 or later

Instances

GSemigroup Ordering Source # 
GSemigroup () Source # 

Methods

gsappend :: () -> () -> () Source #

gstimes :: Integral b => b -> () -> () Source #

gsconcat :: NonEmpty () -> () Source #

GSemigroup Void Source # 
GSemigroup All Source # 
GSemigroup Any Source # 
GSemigroup [a] Source # 

Methods

gsappend :: [a] -> [a] -> [a] Source #

gstimes :: Integral b => b -> [a] -> [a] Source #

gsconcat :: NonEmpty [a] -> [a] Source #

GSemigroup a => GSemigroup (Maybe a) Source # 

Methods

gsappend :: Maybe a -> Maybe a -> Maybe a Source #

gstimes :: Integral b => b -> Maybe a -> Maybe a Source #

gsconcat :: NonEmpty (Maybe a) -> Maybe a Source #

GSemigroup a => GSemigroup (Identity a) Source # 
Ord a => GSemigroup (Min a) Source # 

Methods

gsappend :: Min a -> Min a -> Min a Source #

gstimes :: Integral b => b -> Min a -> Min a Source #

gsconcat :: NonEmpty (Min a) -> Min a Source #

Ord a => GSemigroup (Max a) Source # 

Methods

gsappend :: Max a -> Max a -> Max a Source #

gstimes :: Integral b => b -> Max a -> Max a Source #

gsconcat :: NonEmpty (Max a) -> Max a Source #

GSemigroup (First a) Source # 

Methods

gsappend :: First a -> First a -> First a Source #

gstimes :: Integral b => b -> First a -> First a Source #

gsconcat :: NonEmpty (First a) -> First a Source #

GSemigroup (Last a) Source # 

Methods

gsappend :: Last a -> Last a -> Last a Source #

gstimes :: Integral b => b -> Last a -> Last a Source #

gsconcat :: NonEmpty (Last a) -> Last a Source #

GMonoid m => GSemigroup (WrappedMonoid m) Source # 
GSemigroup a => GSemigroup (Option a) Source # 

Methods

gsappend :: Option a -> Option a -> Option a Source #

gstimes :: Integral b => b -> Option a -> Option a Source #

gsconcat :: NonEmpty (Option a) -> Option a Source #

GSemigroup (NonEmpty a) Source # 
GSemigroup a => GSemigroup (Dual a) Source # 

Methods

gsappend :: Dual a -> Dual a -> Dual a Source #

gstimes :: Integral b => b -> Dual a -> Dual a Source #

gsconcat :: NonEmpty (Dual a) -> Dual a Source #

GSemigroup (Endo a) Source # 

Methods

gsappend :: Endo a -> Endo a -> Endo a Source #

gstimes :: Integral b => b -> Endo a -> Endo a Source #

gsconcat :: NonEmpty (Endo a) -> Endo a Source #

Num a => GSemigroup (Sum a) Source # 

Methods

gsappend :: Sum a -> Sum a -> Sum a Source #

gstimes :: Integral b => b -> Sum a -> Sum a Source #

gsconcat :: NonEmpty (Sum a) -> Sum a Source #

Num a => GSemigroup (Product a) Source # 
GSemigroup (First a) Source # 

Methods

gsappend :: First a -> First a -> First a Source #

gstimes :: Integral b => b -> First a -> First a Source #

gsconcat :: NonEmpty (First a) -> First a Source #

GSemigroup (Last a) Source # 

Methods

gsappend :: Last a -> Last a -> Last a Source #

gstimes :: Integral b => b -> Last a -> Last a Source #

gsconcat :: NonEmpty (Last a) -> Last a Source #

GSemigroup b => GSemigroup (a -> b) Source # 

Methods

gsappend :: (a -> b) -> (a -> b) -> a -> b Source #

gstimes :: Integral b => b -> (a -> b) -> a -> b Source #

gsconcat :: NonEmpty (a -> b) -> a -> b Source #

GSemigroup (Either a b) Source # 

Methods

gsappend :: Either a b -> Either a b -> Either a b Source #

gstimes :: Integral b => b -> Either a b -> Either a b Source #

gsconcat :: NonEmpty (Either a b) -> Either a b Source #

(GSemigroup a, GSemigroup b) => GSemigroup (a, b) Source # 

Methods

gsappend :: (a, b) -> (a, b) -> (a, b) Source #

gstimes :: Integral b => b -> (a, b) -> (a, b) Source #

gsconcat :: NonEmpty (a, b) -> (a, b) Source #

GSemigroup (Proxy k s) Source # 

Methods

gsappend :: Proxy k s -> Proxy k s -> Proxy k s Source #

gstimes :: Integral b => b -> Proxy k s -> Proxy k s Source #

gsconcat :: NonEmpty (Proxy k s) -> Proxy k s Source #

(GSemigroup a, GSemigroup b, GSemigroup c) => GSemigroup (a, b, c) Source # 

Methods

gsappend :: (a, b, c) -> (a, b, c) -> (a, b, c) Source #

gstimes :: Integral b => b -> (a, b, c) -> (a, b, c) Source #

gsconcat :: NonEmpty (a, b, c) -> (a, b, c) Source #

GSemigroup a => GSemigroup (Const k a b) Source # 

Methods

gsappend :: Const k a b -> Const k a b -> Const k a b Source #

gstimes :: Integral b => b -> Const k a b -> Const k a b Source #

gsconcat :: NonEmpty (Const k a b) -> Const k a b Source #

Alternative f => GSemigroup (Alt * f a) Source # 

Methods

gsappend :: Alt * f a -> Alt * f a -> Alt * f a Source #

gstimes :: Integral b => b -> Alt * f a -> Alt * f a Source #

gsconcat :: NonEmpty (Alt * f a) -> Alt * f a Source #

(GSemigroup a, GSemigroup b, GSemigroup c, GSemigroup d) => GSemigroup (a, b, c, d) Source # 

Methods

gsappend :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Source #

gstimes :: Integral b => b -> (a, b, c, d) -> (a, b, c, d) Source #

gsconcat :: NonEmpty (a, b, c, d) -> (a, b, c, d) Source #

(GSemigroup a, GSemigroup b, GSemigroup c, GSemigroup d, GSemigroup e) => GSemigroup (a, b, c, d, e) Source # 

Methods

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

gstimes :: Integral b => b -> (a, b, c, d, e) -> (a, b, c, d, e) Source #

gsconcat :: NonEmpty (a, b, c, d, e) -> (a, b, c, d, e) Source #

(GSemigroup a, GSemigroup b, GSemigroup c, GSemigroup d, GSemigroup e, GSemigroup f) => GSemigroup (a, b, c, d, e, f) Source # 

Methods

gsappend :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> (a, b, c, d, e, f) Source #

gstimes :: Integral b => b -> (a, b, c, d, e, f) -> (a, b, c, d, e, f) Source #

gsconcat :: NonEmpty (a, b, c, d, e, f) -> (a, b, c, d, e, f) Source #

(GSemigroup a, GSemigroup b, GSemigroup c, GSemigroup d, GSemigroup e, GSemigroup f, GSemigroup g) => GSemigroup (a, b, c, d, e, f, g) Source # 

Methods

gsappend :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) Source #

gstimes :: Integral b => b -> (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) Source #

gsconcat :: NonEmpty (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) Source #

(GSemigroup a, GSemigroup b, GSemigroup c, GSemigroup d, GSemigroup e, GSemigroup f, GSemigroup g, GSemigroup h) => GSemigroup (a, b, c, d, e, f, g, h) Source # 

Methods

gsappend :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) Source #

gstimes :: Integral b => b -> (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) Source #

gsconcat :: NonEmpty (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) Source #

Default definition

gsappenddefault :: (Generic a, GSemigroup' (Rep a)) => a -> a -> a infixr 6 Source #

Internal semigroup class

class GSemigroup' f where Source #

Minimal complete definition

gsappend'

Methods

gsappend' :: f x -> f x -> f x infixr 6 Source #

Instances

GSemigroup' * U1 Source # 

Methods

gsappend' :: f x -> f x -> f x Source #

GSemigroup a => GSemigroup' * (K1 i a) Source # 

Methods

gsappend' :: f x -> f x -> f x Source #

(GSemigroup' * f, GSemigroup' * g) => GSemigroup' * ((:*:) f g) Source # 

Methods

gsappend' :: f x -> f x -> f x Source #

GSemigroup' * f => GSemigroup' * (M1 i c f) Source # 

Methods

gsappend' :: f x -> f x -> f x Source #