diff --git a/core/src/main/scala/cats/data/Ior.scala b/core/src/main/scala/cats/data/Ior.scala index a196ac052e..51d29772ae 100644 --- a/core/src/main/scala/cats/data/Ior.scala +++ b/core/src/main/scala/cats/data/Ior.scala @@ -576,11 +576,46 @@ sealed abstract class Ior[+A, +B] extends Product with Serializable { } } + /** + * Example: + * {{{ + * scala> import cats.data.Ior + * scala> import cats.implicits._ + * + * // Nothing to show + * scala> "abc".leftIor[Int].foreach(println) + * res0: Unit = () + * + * // 123 to be shown + * scala> 123.rightIor[String].foreach(println) + * res1: Unit = () + * + * 123 to be shown + * scala> Ior.both("abc", 123).foreach(println) + * res2: Unit = () + * }}} + */ final def foreach(f: B => Unit): Unit = { bimap(_ => (), f) () } + /** + * Example + * {{{ + * scala> import cats.data.Ior + * scala> import cats.implicits._ + * + * scala> "abc".leftIor[Int].traverse(i => List(i, i * 2)) + * res0: List[Ior[String,Int]] = List(Left(abc)) + * + * scala> 123.rightIor[String].traverse(i => List(i, i * 2)) + * res1: List[Ior[String,Int]] = List(Right(123), Right(246)) + * + * scala> Ior.both("abc", 123).traverse(i => List(i, i * 2)) + * res2: List[Ior[String,Int]] = List(Both(abc,123), Both(abc,246)) + * }}} + */ final def traverse[F[_], AA >: A, D](g: B => F[D])(implicit F: Applicative[F]): F[AA Ior D] = this match { case Ior.Left(a) => F.pure(Ior.left(a))