simon.vergauwen
04/23/2019, 3:21 PMSemigroup
.
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.
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)
}