t

scalaz

# Semigroup 

### Companion object Semigroup

#### trait Semigroup[F] extends AnyRef

An associative binary operation, circumscribed by type and the semigroup laws. Unlike scalaz.Monoid, there is not necessarily a zero.

Self Type
Semigroup[F]
Source
Semigroup.scala

scalaz.Semigroup.SemigroupLaw

scalaz.syntax.SemigroupOps

http://mathworld.wolfram.com/Semigroup.html

Linear Supertypes
Known Subclasses
Ordering
1. Alphabetic
2. By Inheritance
Inherited
1. Semigroup
2. AnyRef
3. Any
1. Hide All
2. Show All
Visibility
1. Public
2. All

### Type Members

1. trait SemigroupApply extends Apply[[α]F]
Attributes
protected[this]
2. trait SemigroupCompose extends Compose[[α, β]F]
Attributes
protected[this]
3. trait SemigroupLaw extends AnyRef

A semigroup in type F must satisfy two laws:

A semigroup in type F must satisfy two laws:

• closure: `∀ a, b in F, append(a, b)` is also in `F`. This is enforced by the type system.
• associativity: `∀ a, b, c` in `F`, the equation `append(append(a, b), c) = append(a, append(b , c))` holds.

### Abstract Value Members

1. abstract def append(f1: F, f2: ⇒ F): F

The binary operation to combine `f1` and `f2`.

The binary operation to combine `f1` and `f2`.

Implementations should not evaluate the by-name parameter `f2` if result can be determined by `f1`.

### Concrete Value Members

1. final def !=(arg0: Any)
Definition Classes
AnyRef → Any
2. final def ##(): Int
Definition Classes
AnyRef → Any
3. final def ==(arg0: Any)
Definition Classes
AnyRef → Any
4. final def apply: Apply[[α]F]

An scalaz.Apply, that implements `ap` with `append`.

An scalaz.Apply, that implements `ap` with `append`. Note that the type parameter `α` in `Apply[λ[α => F]]` is discarded; it is a phantom type. As such, the functor cannot support scalaz.Bind.

5. final def asInstanceOf[T0]: T0
Definition Classes
Any
6. def clone()
Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@native() @throws( ... )
7. final def compose: Compose[[α, β]F]

Every `Semigroup` gives rise to a scalaz.Compose, for which the type parameters are phantoms.

Every `Semigroup` gives rise to a scalaz.Compose, for which the type parameters are phantoms.

Note

`compose.semigroup` = `this`

8. final def eq(arg0: AnyRef)
Definition Classes
AnyRef
9. def equals(arg0: Any)
Definition Classes
AnyRef → Any
10. def finalize(): Unit
Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
11. final def getClass(): Class[_]
Definition Classes
AnyRef → Any
Annotations
@native()
12. def hashCode(): Int
Definition Classes
AnyRef → Any
Annotations
@native()
13. final def isInstanceOf[T0]
Definition Classes
Any
14. def multiply1(value: F, n: Int): F

For `n = 0`, `value` For `n = 1`, `append(value, value)` For `n = 2`, `append(append(value, value), value)`

For `n = 0`, `value` For `n = 1`, `append(value, value)` For `n = 2`, `append(append(value, value), value)`

The default definition uses peasant multiplication, exploiting associativity to only require `O(log n)` uses of append

15. final def ne(arg0: AnyRef)
Definition Classes
AnyRef
16. final def notify(): Unit
Definition Classes
AnyRef
Annotations
@native()
17. final def notifyAll(): Unit
Definition Classes
AnyRef
Annotations
@native()
18. def semigroupLaw
19. val semigroupSyntax: SemigroupSyntax[F]
20. final def synchronized[T0](arg0: ⇒ T0): T0
Definition Classes
AnyRef
21. def toString()
Definition Classes
AnyRef → Any
22. def unfoldlSumOpt[S](seed: S)(f: (S) ⇒ Maybe[(S, F)]): Maybe[F]

Unfold `seed` to the left and sum using #append.

Unfold `seed` to the left and sum using #append. Semigroups with right absorbing elements may override this method to not unfold more than is necessary to determine the result.

23. def unfoldrSumOpt[S](seed: S)(f: (S) ⇒ Maybe[(F, S)]): Maybe[F]

Unfold `seed` to the right and sum using #append.

Unfold `seed` to the right and sum using #append. Semigroups with left absorbing elements may override this method to not unfold more than is necessary to determine the result.

24. final def wait(): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
25. final def wait(arg0: Long, arg1: Int): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
26. final def wait(arg0: Long): Unit
Definition Classes
AnyRef
Annotations
@native() @throws( ... )