From 0bb09734dbbf37e59a52a440f46b047e44995094 Mon Sep 17 00:00:00 2001 From: Michael Mroz Date: Thu, 17 Nov 2022 06:41:14 -0800 Subject: [PATCH] Weaken Either monoid dependencies to only require a semigroup on left (#2845) * Weaken Either monoid dependencies to require only a semigroup on left * Update API files Co-authored-by: Michael Mroz Co-authored-by: Alejandro Serrano --- arrow-libs/core/arrow-core/api/arrow-core.api | 4 ++-- .../commonMain/kotlin/arrow/typeclasses/Monoid.kt | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/arrow-libs/core/arrow-core/api/arrow-core.api b/arrow-libs/core/arrow-core/api/arrow-core.api index ac9aed03e72..d5ffc5138ff 100644 --- a/arrow-libs/core/arrow-core/api/arrow-core.api +++ b/arrow-libs/core/arrow-core/api/arrow-core.api @@ -3107,7 +3107,7 @@ public abstract interface class arrow/typeclasses/Monoid : arrow/typeclasses/Sem public abstract fun combineAll (Ljava/util/Collection;)Ljava/lang/Object; public abstract fun combineAll (Ljava/util/List;)Ljava/lang/Object; public static fun constant (Larrow/typeclasses/Monoid;)Larrow/typeclasses/Monoid; - public static fun either (Larrow/typeclasses/Monoid;Larrow/typeclasses/Monoid;)Larrow/typeclasses/Monoid; + public static fun either (Larrow/typeclasses/Semigroup;Larrow/typeclasses/Monoid;)Larrow/typeclasses/Monoid; public abstract fun empty ()Ljava/lang/Object; public static fun endo ()Larrow/typeclasses/Monoid; public abstract fun fold (Ljava/util/Collection;)Ljava/lang/Object; @@ -3128,7 +3128,7 @@ public final class arrow/typeclasses/Monoid$Companion { public final fun Long ()Larrow/typeclasses/Monoid; public final fun Short ()Larrow/typeclasses/Monoid; public final fun constant (Larrow/typeclasses/Monoid;)Larrow/typeclasses/Monoid; - public final fun either (Larrow/typeclasses/Monoid;Larrow/typeclasses/Monoid;)Larrow/typeclasses/Monoid; + public final fun either (Larrow/typeclasses/Semigroup;Larrow/typeclasses/Monoid;)Larrow/typeclasses/Monoid; public final fun endo ()Larrow/typeclasses/Monoid; public final fun list ()Larrow/typeclasses/Monoid; public final fun map (Larrow/typeclasses/Semigroup;)Larrow/typeclasses/Monoid; diff --git a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/typeclasses/Monoid.kt b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/typeclasses/Monoid.kt index 3de4fd8bcfa..6b88f4152c7 100644 --- a/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/typeclasses/Monoid.kt +++ b/arrow-libs/core/arrow-core/src/commonMain/kotlin/arrow/typeclasses/Monoid.kt @@ -76,8 +76,8 @@ public interface Monoid : Semigroup { public fun string(): Monoid = StringMonoid @JvmStatic - public fun either(MA: Monoid, MB: Monoid): Monoid> = - EitherMonoid(MA, MB) + public fun either(SGA: Semigroup, MB: Monoid): Monoid> = + EitherMonoid(SGA, MB) @JvmStatic public fun endo(): Monoid> = @@ -191,22 +191,22 @@ public interface Monoid : Semigroup { } private class EitherMonoid( - private val MOL: Monoid, + private val SGOL: Semigroup, private val MOR: Monoid ) : Monoid> { override fun empty(): Either = Either.Right(MOR.empty()) override fun Either.combine(b: Either): Either = - combine(MOL, MOR, b) + combine(SGOL, MOR, b) override fun Collection>.fold(): Either = - fold(either(MOL, MOR)) + fold(either(SGOL, MOR)) override fun fold(elems: List>): Either = - elems.fold(either(MOL, MOR)) + elems.fold(either(SGOL, MOR)) override fun Either.maybeCombine(b: Either?): Either = - b?.let { combine(MOL, MOR, it) } ?: this + b?.let { combine(SGOL, MOR, it) } ?: this } private class PairMonoid(