From 194490e0c319bf20bc8e09055121819b789fd7d7 Mon Sep 17 00:00:00 2001 From: pk246 Date: Mon, 4 Nov 2019 18:06:11 +0100 Subject: [PATCH 1/7] #3112 adding implementation --- core/src/main/scala/cats/SemigroupK.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/src/main/scala/cats/SemigroupK.scala b/core/src/main/scala/cats/SemigroupK.scala index f3ca1b5965..7ac5cda0d3 100644 --- a/core/src/main/scala/cats/SemigroupK.scala +++ b/core/src/main/scala/cats/SemigroupK.scala @@ -67,4 +67,7 @@ import simulacrum.typeclass new ComposedSemigroupK[F, G] { val F = self } + + def sum[F[_]: SemigroupK : Functor, A, B](fa: F[A], fb: F[B])(implicit F: Functor[F]): F[Either[A,B]] = + combineK(F.map(fa)(Left(_)), F.map(fb)(Right(_))) } From e70563446b13057a7c8833430feaa67f6f3f3385 Mon Sep 17 00:00:00 2001 From: pk246 Date: Mon, 4 Nov 2019 20:05:56 +0100 Subject: [PATCH 2/7] #3112 added documentation with example --- core/src/main/scala/cats/SemigroupK.scala | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/src/main/scala/cats/SemigroupK.scala b/core/src/main/scala/cats/SemigroupK.scala index 7ac5cda0d3..008a64b9ba 100644 --- a/core/src/main/scala/cats/SemigroupK.scala +++ b/core/src/main/scala/cats/SemigroupK.scala @@ -68,6 +68,16 @@ import simulacrum.typeclass val F = self } - def sum[F[_]: SemigroupK : Functor, A, B](fa: F[A], fb: F[B])(implicit F: Functor[F]): F[Either[A,B]] = + /** + * Combines `F[A]` and `F[B]` into a `F[Either[A,B]]]`. + * + * Example: + * {{{ + * scala> import cats.SemigroupK + * scala> SemigroupK[NonEmptyList].sum(NonEmptyList.one(1), NonEmptyList.one(2)) + * res0: cats.data.NonEmptyList[Either[Int,Int]] = NonEmptyList(Left(1), Right(2)) + * }}} + */ + def sum[A, B](fa: F[A], fb: F[B])(implicit F: Functor[F]): F[Either[A,B]] = combineK(F.map(fa)(Left(_)), F.map(fb)(Right(_))) } From fb61dbd6131b6714cbb354534f299d07fa6d2ef3 Mon Sep 17 00:00:00 2001 From: pk246 Date: Mon, 4 Nov 2019 20:07:36 +0100 Subject: [PATCH 3/7] adding pk044 to AUTHORS.md --- AUTHORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.md b/AUTHORS.md index 9f4aeac421..38c55066ba 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -191,6 +191,7 @@ possible: * Paulo "JCranky" Siqueira * Pavel Chlupacek * Pavkin Vladimir + * Paweł Kiersznowski * Paweł Lipski * Pepe García * Pere Villega From 413bd22e123aac3ccc42d001838c783c2f6bb768 Mon Sep 17 00:00:00 2001 From: pk246 Date: Mon, 4 Nov 2019 20:10:17 +0100 Subject: [PATCH 4/7] formatting --- core/src/main/scala/cats/SemigroupK.scala | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/core/src/main/scala/cats/SemigroupK.scala b/core/src/main/scala/cats/SemigroupK.scala index 008a64b9ba..53452a65c9 100644 --- a/core/src/main/scala/cats/SemigroupK.scala +++ b/core/src/main/scala/cats/SemigroupK.scala @@ -69,15 +69,15 @@ import simulacrum.typeclass } /** - * Combines `F[A]` and `F[B]` into a `F[Either[A,B]]]`. - * - * Example: - * {{{ - * scala> import cats.SemigroupK - * scala> SemigroupK[NonEmptyList].sum(NonEmptyList.one(1), NonEmptyList.one(2)) - * res0: cats.data.NonEmptyList[Either[Int,Int]] = NonEmptyList(Left(1), Right(2)) - * }}} - */ - def sum[A, B](fa: F[A], fb: F[B])(implicit F: Functor[F]): F[Either[A,B]] = + * Combines `F[A]` and `F[B]` into a `F[Either[A,B]]]`. + * + * Example: + * {{{ + * scala> import cats.SemigroupK + * scala> SemigroupK[NonEmptyList].sum(NonEmptyList.one(1), NonEmptyList.one(2)) + * res0: cats.data.NonEmptyList[Either[Int,Int]] = NonEmptyList(Left(1), Right(2)) + * }}} + */ + def sum[A, B](fa: F[A], fb: F[B])(implicit F: Functor[F]): F[Either[A, B]] = combineK(F.map(fa)(Left(_)), F.map(fb)(Right(_))) } From 598cb801a8e077e82331d8afcae0afa3af2d10ce Mon Sep 17 00:00:00 2001 From: pk246 Date: Mon, 4 Nov 2019 20:48:06 +0100 Subject: [PATCH 5/7] fixed doctest --- core/src/main/scala/cats/SemigroupK.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/scala/cats/SemigroupK.scala b/core/src/main/scala/cats/SemigroupK.scala index 53452a65c9..424cd89594 100644 --- a/core/src/main/scala/cats/SemigroupK.scala +++ b/core/src/main/scala/cats/SemigroupK.scala @@ -73,7 +73,8 @@ import simulacrum.typeclass * * Example: * {{{ - * scala> import cats.SemigroupK + * scala> import cats.implicits._ + * scala> import cats.data.NonEmptyList * scala> SemigroupK[NonEmptyList].sum(NonEmptyList.one(1), NonEmptyList.one(2)) * res0: cats.data.NonEmptyList[Either[Int,Int]] = NonEmptyList(Left(1), Right(2)) * }}} From cba764917b77c22a6c71b6722ef9d31ba4d60088 Mon Sep 17 00:00:00 2001 From: pk246 Date: Mon, 4 Nov 2019 21:12:43 +0100 Subject: [PATCH 6/7] fixed doctest --- core/src/main/scala/cats/SemigroupK.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/cats/SemigroupK.scala b/core/src/main/scala/cats/SemigroupK.scala index 424cd89594..127b068297 100644 --- a/core/src/main/scala/cats/SemigroupK.scala +++ b/core/src/main/scala/cats/SemigroupK.scala @@ -73,10 +73,10 @@ import simulacrum.typeclass * * Example: * {{{ - * scala> import cats.implicits._ + * scala> import cats.SemigroupK * scala> import cats.data.NonEmptyList * scala> SemigroupK[NonEmptyList].sum(NonEmptyList.one(1), NonEmptyList.one(2)) - * res0: cats.data.NonEmptyList[Either[Int,Int]] = NonEmptyList(Left(1), Right(2)) + * res0: NonEmptyList[Either[Int,Int]] = NonEmptyList(Left(1), Right(2)) * }}} */ def sum[A, B](fa: F[A], fb: F[B])(implicit F: Functor[F]): F[Either[A, B]] = From 0b7aef665909b142106fd951107bcc57fd5d4569 Mon Sep 17 00:00:00 2001 From: Pawel Kiersznowski Date: Tue, 5 Nov 2019 13:44:47 +0100 Subject: [PATCH 7/7] used different type in example --- core/src/main/scala/cats/SemigroupK.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/cats/SemigroupK.scala b/core/src/main/scala/cats/SemigroupK.scala index 127b068297..ef1e1042b1 100644 --- a/core/src/main/scala/cats/SemigroupK.scala +++ b/core/src/main/scala/cats/SemigroupK.scala @@ -75,8 +75,8 @@ import simulacrum.typeclass * {{{ * scala> import cats.SemigroupK * scala> import cats.data.NonEmptyList - * scala> SemigroupK[NonEmptyList].sum(NonEmptyList.one(1), NonEmptyList.one(2)) - * res0: NonEmptyList[Either[Int,Int]] = NonEmptyList(Left(1), Right(2)) + * scala> SemigroupK[NonEmptyList].sum(NonEmptyList.one("abc"), NonEmptyList.one(2)) + * res0: NonEmptyList[Either[String,Int]] = NonEmptyList(Left(abc), Right(2)) * }}} */ def sum[A, B](fa: F[A], fb: F[B])(implicit F: Functor[F]): F[Either[A, B]] =