Traverse.sequence Example:
scala> import cats.std.list._ scala> import cats.std.option._ scala> import cats.syntax.traverse._ scala> val x: List[Option[Int]] = List(Some(1), Some(2)) scala> val y: List[Option[Int]] = List(None, Some(2)) scala> x.sequence res0: Option[List[Int]] = Some(List(1, 2)) scala> y.sequence res1: Option[List[Int]] = None
Traverse.sequenceU Example:
scala> import cats.data.{Validated, ValidatedNel} scala> import cats.std.list._ scala> import cats.syntax.traverse._ scala> val x: List[ValidatedNel[String, Int]] = List(Validated.valid(1), Validated.invalid("a"), Validated.invalid("b")).map(_.toValidatedNel) scala> x.sequenceU res0: cats.data.ValidatedNel[String,List[Int]] = Invalid(OneAnd(a,List(b))) scala> x.sequence[ValidatedNel[String, ?], Int] res1: cats.data.ValidatedNel[String,List[Int]] = Invalid(OneAnd(a,List(b)))
Traverse.traverse Example:
scala> import cats.data.Xor scala> import cats.std.list._ scala> import cats.std.option._ scala> import cats.syntax.traverse._ scala> def parseInt(s: String): Option[Int] = Xor.catchOnly[NumberFormatException](s.toInt).toOption scala> List("1", "2", "3").traverse(parseInt) res0: Option[List[Int]] = Some(List(1, 2, 3)) scala> List("1", "two", "3").traverse(parseInt) res1: Option[List[Int]] = None
Traverse.traverseM Example:
scala> import cats.data.Xor scala> import cats.std.list._ scala> import cats.std.option._ scala> import cats.syntax.traverse._ scala> def parseInt(s: String): Option[Int] = Xor.catchOnly[NumberFormatException](s.toInt).toOption scala> val x = Option(List("1", "two", "3")) scala> x.traverseM(_.map(parseInt)) res0: List[Option[Int]] = List(Some(1), None, Some(3))
Traverse.traverse Example:
scala> import cats.data.Xor scala> import cats.std.list._ scala> import cats.syntax.traverse._ scala> def parseInt(s: String): Xor[String, Int] = Xor.catchOnly[NumberFormatException](s.toInt).leftMap(_ => "no number") scala> val ns = List("1", "2", "3") scala> ns.traverseU(parseInt) res0: Xor[String, List[Int]] = Right(List(1, 2, 3)) scala> ns.traverse[Xor[String, ?], Int](parseInt) res1: Xor[String, List[Int]] = Right(List(1, 2, 3))