t

scalaz

# Monoid 

### Companion object Monoid

#### trait Monoid[F] extends Semigroup[F]

Provides an identity element (`zero`) to the binary `append` operation in scalaz.Semigroup, subject to the monoid laws.

Example instances:

• `Monoid[Int]`: `zero` and `append` are `0` and `Int#+` respectively
• `Monoid[List[A]]`: `zero` and `append` are `Nil` and `List#++` respectively

References:

Self Type
Monoid[F]
Source
Monoid.scala

scalaz.syntax.MonoidOps

scalaz.Monoid.MonoidLaw

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

### Type Members

1. trait MonoidLaw extends SemigroupLaw

Monoid instances must satisfy scalaz.Semigroup.SemigroupLaw and 2 additional laws:

Monoid instances must satisfy scalaz.Semigroup.SemigroupLaw and 2 additional laws:

• left identity: `forall a. append(zero, a) == a`
• right identity : `forall a. append(a, zero) == a`
2. trait SemigroupApply extends Apply[[α]F]
Attributes
protected[this]
Definition Classes
Semigroup
3. trait SemigroupCompose extends Compose[[α, β]F]
Attributes
protected[this]
Definition Classes
Semigroup
4. 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.
Definition Classes
Semigroup

### 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`.

Definition Classes
Semigroup
2. abstract def zero: F

The identity element for `append`.

### 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 applicative: Applicative[[α]F]

A monoidal applicative functor, that implements `point` and `ap` with the operations `zero` and `append` respectively.

A monoidal applicative functor, that implements `point` and `ap` with the operations `zero` and `append` respectively. Note that the type parameter `α` in `Applicative[λ[α => F]]` is discarded; it is a phantom type. As such, the functor cannot support scalaz.Bind.

5. 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.

Definition Classes
Semigroup
6. final def asInstanceOf[T0]: T0
Definition Classes
Any
7. final def category: Category[[α, β]F]

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

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

Note

`category.monoid` = `this`

8. def clone()
Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( ... ) @native()
9. 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.

Definition Classes
Semigroup
Note

`compose.semigroup` = `this`

10. final def eq(arg0: AnyRef)
Definition Classes
AnyRef
11. def equals(arg0: Any)
Definition Classes
AnyRef → Any
12. def finalize(): Unit
Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
13. final def getClass(): Class[_]
Definition Classes
AnyRef → Any
Annotations
@native()
14. def hashCode(): Int
Definition Classes
AnyRef → Any
Annotations
@native()
15. final def ifEmpty[B](a: F)(t: ⇒ B)(f: ⇒ B)(implicit eq: Equal[F]): B
16. final def isInstanceOf[T0]
Definition Classes
Any
17. def isMZero(a: F)(implicit eq: Equal[F])

Whether `a` == `zero`.

18. def monoidLaw
19. val monoidSyntax: MonoidSyntax[F]
20. def multiply(value: F, n: Int): F

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

21. 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

Definition Classes
Semigroup
22. final def ne(arg0: AnyRef)
Definition Classes
AnyRef
23. final def notify(): Unit
Definition Classes
AnyRef
Annotations
@native()
24. final def notifyAll(): Unit
Definition Classes
AnyRef
Annotations
@native()
25. final def onEmpty[A, B](a: F)(v: ⇒ B)(implicit eq: Equal[F], mb: Monoid[B]): B
26. final def onNotEmpty[B](a: F)(v: ⇒ B)(implicit eq: Equal[F], mb: Monoid[B]): B
27. def semigroupLaw
Definition Classes
Semigroup
28. val semigroupSyntax: SemigroupSyntax[F]
Definition Classes
Semigroup
29. final def synchronized[T0](arg0: ⇒ T0): T0
Definition Classes
AnyRef
30. def toString()
Definition Classes
AnyRef → Any
31. final def wait(): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
32. final def wait(arg0: Long, arg1: Int): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
33. final def wait(arg0: Long): Unit
Definition Classes
AnyRef
Annotations
@throws( ... ) @native()