Skip to content

Commit 5e555d6

Browse files
author
Valy Dia
committed
Add CommutativeMonoid[Option[A]] instance (#2725)
1 parent 287c27e commit 5e555d6

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

kernel/src/main/scala/cats/kernel/instances/option/package.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ package object option extends OptionInstances
66
trait OptionInstances extends OptionInstances0 {
77
implicit def catsKernelStdOrderForOption[A: Order]: Order[Option[A]] =
88
new OptionOrder[A]
9-
implicit def catsKernelStdMonoidForOption[A: Semigroup]: Monoid[Option[A]] =
10-
new OptionMonoid[A]
9+
implicit def catsKernelStdCommutativeMonoidForOption[A: CommutativeSemigroup]: CommutativeMonoid[Option[A]] =
10+
new OptionCommutativeMonoid[A]
1111
}
1212

1313
trait OptionInstances0 extends OptionInstances1 {
1414
implicit def catsKernelStdPartialOrderForOption[A: PartialOrder]: PartialOrder[Option[A]] =
1515
new OptionPartialOrder[A]
16+
implicit def catsKernelStdMonoidForOption[A: Semigroup]: Monoid[Option[A]] =
17+
new OptionMonoid[A]
1618
}
1719

1820
trait OptionInstances1 extends OptionInstances2 {
@@ -70,6 +72,10 @@ class OptionEq[A](implicit A: Eq[A]) extends Eq[Option[A]] {
7072
}
7173
}
7274

75+
class OptionCommutativeMonoid[A](implicit A: CommutativeSemigroup[A])
76+
extends OptionMonoid[A]()(A)
77+
with CommutativeMonoid[Option[A]]
78+
7379
class OptionMonoid[A](implicit A: Semigroup[A]) extends Monoid[Option[A]] {
7480
def empty: Option[A] = None
7581
def combine(x: Option[A], y: Option[A]): Option[A] =

0 commit comments

Comments
 (0)