Generics.Deriving.Semigroup

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

Safe Haskell | Safe
Language | Haskell2010

Generics.Deriving.Semigroup

Contents

- Generic semigroup class
- Default definition
- Internal semigroup class

Synopsis

- class GSemigroup a where
- gsappenddefault :: (Generic a, GSemigroup' (Rep a)) => a -> a -> a
- class GSemigroup' f where

# Generic semigroup class

class GSemigroup a where #

Methods

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

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

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

gsconcat :: NonEmpty a -> a #

Only available with `base-4.9` or later

Instances

GSemigroup Ordering # |
Methods gsappend :: Ordering -> Ordering -> Ordering # gstimes :: Integral b => b -> Ordering -> Ordering # gsconcat :: NonEmpty Ordering -> Ordering #
GSemigroup () # |
Methods gsappend :: () -> () -> () # gstimes :: Integral b => b -> () -> () # gsconcat :: NonEmpty () -> () #
GSemigroup Void # |
Methods gsappend :: Void -> Void -> Void # gstimes :: Integral b => b -> Void -> Void # gsconcat :: NonEmpty Void -> Void #
GSemigroup All # |
Methods gsappend :: All -> All -> All # gstimes :: Integral b => b -> All -> All # gsconcat :: NonEmpty All -> All #
GSemigroup Any # |
Methods gsappend :: Any -> Any -> Any # gstimes :: Integral b => b -> Any -> Any # gsconcat :: NonEmpty Any -> Any #
GSemigroup [a] # |
Methods gsappend :: [a] -> [a] -> [a] # gstimes :: Integral b => b -> [a] -> [a] # gsconcat :: NonEmpty [a] -> [a] #
GSemigroup a => GSemigroup (Maybe a) # |
Methods gsappend :: Maybe a -> Maybe a -> Maybe a # gstimes :: Integral b => b -> Maybe a -> Maybe a # gsconcat :: NonEmpty (Maybe a) -> Maybe a #
GSemigroup a => GSemigroup (Identity a) # |
Methods gsappend :: Identity a -> Identity a -> Identity a # gstimes :: Integral b => b -> Identity a -> Identity a # gsconcat :: NonEmpty (Identity a) -> Identity a #
Ord a => GSemigroup (Min a) # |
Methods gsappend :: Min a -> Min a -> Min a # gstimes :: Integral b => b -> Min a -> Min a # gsconcat :: NonEmpty (Min a) -> Min a #
Ord a => GSemigroup (Max a) # |
Methods gsappend :: Max a -> Max a -> Max a # gstimes :: Integral b => b -> Max a -> Max a # gsconcat :: NonEmpty (Max a) -> Max a #
GSemigroup (First a) # |
Methods gsappend :: First a -> First a -> First a # gstimes :: Integral b => b -> First a -> First a # gsconcat :: NonEmpty (First a) -> First a #
GSemigroup (Last a) # |
Methods gsappend :: Last a -> Last a -> Last a # gstimes :: Integral b => b -> Last a -> Last a # gsconcat :: NonEmpty (Last a) -> Last a #
GMonoid m => GSemigroup (WrappedMonoid m) # |
Methods gsappend :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m # gstimes :: Integral b => b -> WrappedMonoid m -> WrappedMonoid m # gsconcat :: NonEmpty (WrappedMonoid m) -> WrappedMonoid m #
GSemigroup a => GSemigroup (Option a) # |
Methods gsappend :: Option a -> Option a -> Option a # gstimes :: Integral b => b -> Option a -> Option a # gsconcat :: NonEmpty (Option a) -> Option a #
GSemigroup (NonEmpty a) # |
Methods gsappend :: NonEmpty a -> NonEmpty a -> NonEmpty a # gstimes :: Integral b => b -> NonEmpty a -> NonEmpty a # gsconcat :: NonEmpty (NonEmpty a) -> NonEmpty a #
GSemigroup a => GSemigroup (Dual a) # |
Methods gsappend :: Dual a -> Dual a -> Dual a # gstimes :: Integral b => b -> Dual a -> Dual a # gsconcat :: NonEmpty (Dual a) -> Dual a #
GSemigroup (Endo a) # |
Methods gsappend :: Endo a -> Endo a -> Endo a # gstimes :: Integral b => b -> Endo a -> Endo a # gsconcat :: NonEmpty (Endo a) -> Endo a #
Num a => GSemigroup (Sum a) # |
Methods gsappend :: Sum a -> Sum a -> Sum a # gstimes :: Integral b => b -> Sum a -> Sum a # gsconcat :: NonEmpty (Sum a) -> Sum a #
Num a => GSemigroup (Product a) # |
Methods gsappend :: Product a -> Product a -> Product a # gstimes :: Integral b => b -> Product a -> Product a # gsconcat :: NonEmpty (Product a) -> Product a #
GSemigroup (First a) # |
Methods gsappend :: First a -> First a -> First a # gstimes :: Integral b => b -> First a -> First a # gsconcat :: NonEmpty (First a) -> First a #
GSemigroup (Last a) # |
Methods gsappend :: Last a -> Last a -> Last a # gstimes :: Integral b => b -> Last a -> Last a # gsconcat :: NonEmpty (Last a) -> Last a #
GSemigroup b => GSemigroup (a -> b) # |
Methods gsappend :: (a -> b) -> (a -> b) -> a -> b # gstimes :: Integral b => b -> (a -> b) -> a -> b # gsconcat :: NonEmpty (a -> b) -> a -> b #
GSemigroup (Either a b) # |
Methods gsappend :: Either a b -> Either a b -> Either a b # gstimes :: Integral b => b -> Either a b -> Either a b # gsconcat :: NonEmpty (Either a b) -> Either a b #
(GSemigroup a, GSemigroup b) => GSemigroup (a, b) # |
Methods gsappend :: (a, b) -> (a, b) -> (a, b) # gstimes :: Integral b => b -> (a, b) -> (a, b) # gsconcat :: NonEmpty (a, b) -> (a, b) #
GSemigroup (Proxy k s) # |
Methods gsappend :: Proxy k s -> Proxy k s -> Proxy k s # gstimes :: Integral b => b -> Proxy k s -> Proxy k s # gsconcat :: NonEmpty (Proxy k s) -> Proxy k s #
(GSemigroup a, GSemigroup b, GSemigroup c) => GSemigroup (a, b, c) # |
Methods gsappend :: (a, b, c) -> (a, b, c) -> (a, b, c) # gstimes :: Integral b => b -> (a, b, c) -> (a, b, c) # gsconcat :: NonEmpty (a, b, c) -> (a, b, c) #
GSemigroup a => GSemigroup (Const k a b) # |
Methods gsappend :: Const k a b -> Const k a b -> Const k a b # gstimes :: Integral b => b -> Const k a b -> Const k a b # gsconcat :: NonEmpty (Const k a b) -> Const k a b #
Alternative f => GSemigroup (Alt * f a) # |
Methods gsappend :: Alt * f a -> Alt * f a -> Alt * f a # gstimes :: Integral b => b -> Alt * f a -> Alt * f a # gsconcat :: NonEmpty (Alt * f a) -> Alt * f a #
(GSemigroup a, GSemigroup b, GSemigroup c, GSemigroup d) => GSemigroup (a, b, c, d) # |
Methods gsappend :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) # gstimes :: Integral b => b -> (a, b, c, d) -> (a, b, c, d) # gsconcat :: NonEmpty (a, b, c, d) -> (a, b, c, d) #
(GSemigroup a, GSemigroup b, GSemigroup c, GSemigroup d, GSemigroup e) => GSemigroup (a, b, c, d, e) # |
Methods gsappend :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) # gstimes :: Integral b => b -> (a, b, c, d, e) -> (a, b, c, d, e) # gsconcat :: NonEmpty (a, b, c, d, e) -> (a, b, c, d, e) #
(GSemigroup a, GSemigroup b, GSemigroup c, GSemigroup d, GSemigroup e, GSemigroup f) => GSemigroup (a, b, c, d, e, f) # |
Methods gsappend :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> (a, b, c, d, e, f) # gstimes :: Integral b => b -> (a, b, c, d, e, f) -> (a, b, c, d, e, f) # gsconcat :: NonEmpty (a, b, c, d, e, f) -> (a, b, c, d, e, f) #
(GSemigroup a, GSemigroup b, GSemigroup c, GSemigroup d, GSemigroup e, GSemigroup f, GSemigroup g) => GSemigroup (a, b, c, d, e, f, g) # |
Methods gsappend :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) # gstimes :: Integral b => b -> (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) # gsconcat :: NonEmpty (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) #
(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) # |
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) # gstimes :: Integral b => b -> (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) # gsconcat :: NonEmpty (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) #

# Default definition

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

# Internal semigroup class

class GSemigroup' f where #

Minimal complete definition

gsappend'

Methods

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

Instances

GSemigroup' * U1 # |
Methods gsappend' :: f x -> f x -> f x #
GSemigroup a => GSemigroup' * (K1 i a) # |
Methods gsappend' :: f x -> f x -> f x #
(GSemigroup' * f, GSemigroup' * g) => GSemigroup' * ((:*:) f g) # |
Methods gsappend' :: f x -> f x -> f x #
GSemigroup' * f => GSemigroup' * (M1 i c f) # |
Methods gsappend' :: f x -> f x -> f x #