t

scalaz

# IsomorphismSemigroup 

#### trait IsomorphismSemigroup[F, G] extends Semigroup[F]

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

### Type Members

1. trait SemigroupApply extends Apply[[α]F]
Attributes
protected[this]
Definition Classes
Semigroup
2. trait SemigroupCompose extends Compose[[α, β]F]
Attributes
protected[this]
Definition Classes
Semigroup
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.
Definition Classes
Semigroup

### Abstract Value Members

1. implicit abstract def G: Semigroup[G]
2. abstract def iso: Isomorphism.<=>[F, G]

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

9. final def eq(arg0: AnyRef)
Definition Classes
AnyRef
10. def equals(arg0: Any)
Definition Classes
AnyRef → Any
11. def finalize(): Unit
Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
12. final def getClass(): Class[_]
Definition Classes
AnyRef → Any
Annotations
@native()
13. def hashCode(): Int
Definition Classes
AnyRef → Any
Annotations
@native()
14. final def isInstanceOf[T0]
Definition Classes
Any
15. 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
16. final def ne(arg0: AnyRef)
Definition Classes
AnyRef
17. final def notify(): Unit
Definition Classes
AnyRef
Annotations
@native()
18. final def notifyAll(): Unit
Definition Classes
AnyRef
Annotations
@native()
19. def semigroupLaw
Definition Classes
Semigroup
20. val semigroupSyntax: SemigroupSyntax[F]
Definition Classes
Semigroup
21. final def synchronized[T0](arg0: ⇒ T0): T0
Definition Classes
AnyRef
22. def toString()
Definition Classes
AnyRef → Any
23. 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.

Definition Classes
Semigroup
24. 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.

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