Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Documentation
class Semigroup a where Source #
The class of semigroups (types with an associative binary operation).
Instances should satisfy the following:
Since: base-4.9.0.0
(<>) :: 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 =
or
stimesIdempotent
stimes =
respectively.
stimesIdempotentMonoid
>>>
stimes 4 [1]
[1,1,1,1]
Instances
Semigroup Ordering |
Since: base-4.9.0.0 |
Semigroup () |
Since: base-4.9.0.0 |
Semigroup All |
Since: base-4.9.0.0 |
Semigroup Any |
Since: base-4.9.0.0 |
Semigroup AsciiString Source # | |
Defined in Basement.Types.AsciiString (<>) :: AsciiString -> AsciiString -> AsciiString Source # sconcat :: NonEmpty AsciiString -> AsciiString Source # stimes :: Integral b => b -> AsciiString -> AsciiString Source # |
|
Semigroup String Source # | |
Semigroup Builder Source # | |
Semigroup Builder Source # | |
Semigroup [a] |
Since: base-4.9.0.0 |
Semigroup a => Semigroup ( Maybe a) |
Since: base-4.9.0.0 |
Semigroup a => Semigroup ( IO a) |
Since: base-4.10.0.0 |
Semigroup p => Semigroup ( Par1 p) |
Since: base-4.12.0.0 |
Ord a => Semigroup ( Min a) |
Since: base-4.9.0.0 |
Ord a => Semigroup ( Max a) |
Since: base-4.9.0.0 |
Semigroup ( First a) |
Since: base-4.9.0.0 |
Semigroup ( Last a) |
Since: base-4.9.0.0 |
Monoid m => Semigroup ( WrappedMonoid m) |
Since: base-4.9.0.0 |
Defined in Data.Semigroup (<>) :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Source # sconcat :: NonEmpty ( WrappedMonoid m) -> WrappedMonoid m Source # stimes :: Integral b => b -> WrappedMonoid m -> WrappedMonoid m Source # |
|
Semigroup a => Semigroup ( Option a) |
Since: base-4.9.0.0 |
Semigroup a => Semigroup ( Identity a) |
Since: base-4.9.0.0 |
Semigroup ( First a) |
Since: base-4.9.0.0 |
Semigroup ( Last a) |
Since: base-4.9.0.0 |
Semigroup a => Semigroup ( Dual a) |
Since: base-4.9.0.0 |
Semigroup ( Endo a) |
Since: base-4.9.0.0 |
Num a => Semigroup ( Sum a) |
Since: base-4.9.0.0 |
Num a => Semigroup ( Product a) |
Since: base-4.9.0.0 |
Semigroup a => Semigroup ( Down a) |
Since: base-4.11.0.0 |
Semigroup ( NonEmpty a) |
Since: base-4.9.0.0 |
Semigroup ( CountOf ty) Source # | |
PrimType ty => Semigroup ( Block ty) Source # | |
PrimType ty => Semigroup ( UArray ty) Source # | |
Semigroup ( Array a) Source # | |
Semigroup b => Semigroup (a -> b) |
Since: base-4.9.0.0 |
Semigroup ( Either a b) |
Since: base-4.9.0.0 |
Semigroup ( V1 p) |
Since: base-4.12.0.0 |
Semigroup ( U1 p) |
Since: base-4.12.0.0 |
( Semigroup a, Semigroup b) => Semigroup (a, b) |
Since: base-4.9.0.0 |
Semigroup ( Proxy s) |
Since: base-4.9.0.0 |
Semigroup a => Semigroup ( ST s a) |
Since: base-4.11.0.0 |
Semigroup (f p) => Semigroup ( Rec1 f p) |
Since: base-4.12.0.0 |
( Semigroup a, Semigroup b, Semigroup c) => Semigroup (a, b, c) |
Since: base-4.9.0.0 |
Semigroup a => Semigroup ( Const a b) |
Since: base-4.9.0.0 |
( Applicative f, Semigroup a) => Semigroup ( Ap f a) |
Since: base-4.12.0.0 |
Alternative f => Semigroup ( Alt f a) |
Since: base-4.9.0.0 |
Semigroup c => Semigroup ( K1 i c p) |
Since: base-4.12.0.0 |
( Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p) |
Since: base-4.12.0.0 |
( Semigroup a, Semigroup b, Semigroup c, Semigroup d) => Semigroup (a, b, c, d) |
Since: base-4.9.0.0 |
Semigroup (f p) => Semigroup ( M1 i c f p) |
Since: base-4.12.0.0 |
Semigroup (f (g p)) => Semigroup ((f :.: g) p) |
Since: base-4.12.0.0 |
( Semigroup a, Semigroup b, Semigroup c, Semigroup d, Semigroup e) => Semigroup (a, b, c, d, e) |
Since: base-4.9.0.0 |
type ListNonEmpty = NonEmpty Source #