The pattern of combining two elements is abstracte...
# arrow
s
The pattern of combining two elements is abstracted with
Semigroup
.
Copy code
interface Semigroup<A> {
  fun A.combine(b: A): A
  operator fun A.plus(b: A): A = this.combine(b)
}
You can then compose multiple
Semigroup
together.
Copy code
import arrow.core.Option
import arrow.core.extensions.option.semigroup.semigroup
import arrow.core.extensions.semigroup

val example = Option.semigroup(Int.semigroup()).run {
  Option(1) + Option(2)
}
🔝 3