basement-0.0.15: Foundation scrap box of array & string
Safe Haskell Safe-Inferred
Language Haskell2010

Basement.Compat.Semigroup

Synopsis

Documentation

class Semigroup a where Source #

The class of semigroups (types with an associative binary operation).

Instances should satisfy the following:

Associativity
x <> (y <> z) = (x <> y) <> z

Since: base-4.9.0.0

Minimal complete definition

(<>)

Methods

(<>) :: a -> a -> a infixr 6 Source #

An associative operation.

>>> [1,2,3] <> [4,5,6]
[1,2,3,4,5,6]

sconcat :: NonEmpty a -> a Source #

Reduce a non-empty list with <>

The default definition should be sufficient, but this can be overridden for efficiency.

>>> import Data.List.NonEmpty
>>> sconcat $ "Hello" :| [" ", "Haskell", "!"]
"Hello Haskell!"

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

Repeat a value n times.

Given that this works on a Semigroup it is allowed to fail if you request 0 or fewer repetitions, and the default definition will do so.

By making this a member of the class, idempotent semigroups and monoids can upgrade this to execute in \(\mathcal{O}(1)\) by picking stimes = stimesIdempotent or stimes = stimesIdempotentMonoid respectively.

>>> stimes 4 [1]
[1,1,1,1]

Instances

Instances details
Semigroup Ordering

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Semigroup ()

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Semigroup All

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Semigroup Any

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Semigroup AsciiString Source #
Instance details

Defined in Basement.Types.AsciiString

Semigroup String Source #
Instance details

Defined in Basement.UTF8.Base

Semigroup Builder Source #
Instance details

Defined in Basement.Block.Builder

Semigroup Builder Source #
Instance details

Defined in Basement.String.Builder

Semigroup [a]

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

(<>) :: [a] -> [a] -> [a] Source #

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

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

Semigroup a => Semigroup ( Maybe a)

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Semigroup a => Semigroup ( IO a)

Since: base-4.10.0.0

Instance details

Defined in GHC.Base

Semigroup p => Semigroup ( Par1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Ord a => Semigroup ( Min a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Ord a => Semigroup ( Max a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Semigroup ( First a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Semigroup ( Last a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Monoid m => Semigroup ( WrappedMonoid m)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Semigroup a => Semigroup ( Option a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Semigroup a => Semigroup ( Identity a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

Semigroup ( First a)

Since: base-4.9.0.0

Instance details

Defined in Data.Monoid

Semigroup ( Last a)

Since: base-4.9.0.0

Instance details

Defined in Data.Monoid

Semigroup a => Semigroup ( Dual a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Semigroup ( Endo a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Num a => Semigroup ( Sum a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Num a => Semigroup ( Product a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Semigroup a => Semigroup ( Down a)

Since: base-4.11.0.0

Instance details

Defined in Data.Ord

Semigroup ( NonEmpty a)

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Semigroup ( CountOf ty) Source #
Instance details

Defined in Basement.Types.OffsetSize

PrimType ty => Semigroup ( Block ty) Source #
Instance details

Defined in Basement.Block.Base

PrimType ty => Semigroup ( UArray ty) Source #
Instance details

Defined in Basement.UArray.Base

Semigroup ( Array a) Source #
Instance details

Defined in Basement.BoxedArray

Semigroup b => Semigroup (a -> b)

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

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

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

stimes :: Integral b0 => b0 -> (a -> b) -> a -> b Source #

Semigroup ( Either a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Either

Semigroup ( V1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Semigroup ( U1 p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

( Semigroup a, Semigroup b) => Semigroup (a, b)

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

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

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

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

Semigroup ( Proxy s)

Since: base-4.9.0.0

Instance details

Defined in Data.Proxy

Semigroup a => Semigroup ( ST s a)

Since: base-4.11.0.0

Instance details

Defined in GHC.ST

Semigroup (f p) => Semigroup ( Rec1 f p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

( Semigroup a, Semigroup b, Semigroup c) => Semigroup (a, b, c)

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

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

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

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

Semigroup a => Semigroup ( Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

( Applicative f, Semigroup a) => Semigroup ( Ap f a)

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

Alternative f => Semigroup ( Alt f a)

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Semigroup c => Semigroup ( K1 i c p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

( Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p Source #

sconcat :: NonEmpty ((f :*: g) p) -> (f :*: g) p Source #

stimes :: Integral b => b -> (f :*: g) p -> (f :*: g) p Source #

( Semigroup a, Semigroup b, Semigroup c, Semigroup d) => Semigroup (a, b, c, d)

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

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

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

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

Semigroup (f p) => Semigroup ( M1 i c f p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: M1 i c f p -> M1 i c f p -> M1 i c f p Source #

sconcat :: NonEmpty ( M1 i c f p) -> M1 i c f p Source #

stimes :: Integral b => b -> M1 i c f p -> M1 i c f p Source #

Semigroup (f (g p)) => Semigroup ((f :.: g) p)

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: (f :.: g) p -> (f :.: g) p -> (f :.: g) p Source #

sconcat :: NonEmpty ((f :.: g) p) -> (f :.: g) p Source #

stimes :: Integral b => b -> (f :.: g) p -> (f :.: g) p Source #

( Semigroup a, Semigroup b, Semigroup c, Semigroup d, Semigroup e) => Semigroup (a, b, c, d, e)

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

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

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

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