Fold implemented by mapping A
values into B
in a context G
and then
combining them using the MonoidK[G]
instance.
Fold implemented by mapping A
values into B
in a context G
and then
combining them using the MonoidK[G]
instance.
scala> import cats._, cats.implicits._ scala> val f: Int => Endo[String] = i => (s => s + i) scala> val x: Endo[String] = List(1, 2, 3).foldMapK(f) scala> val a = x("foo") a: String = "foo321"
Make a string using Show
and delimiter.
Make a string using Show
and delimiter.
Named as mkString_
to avoid conflict.
Example:
scala> import cats.implicits._ scala> val l: List[Int] = List(1, 2, 3) scala> l.mkString_(",") res0: String = 1,2,3 scala> val el: List[Int] = List() scala> el.mkString_(",") res1: String =
Separate this Foldable into a Tuple by an effectful separating function A => H[B, C]
for some Bifoldable[H]
Equivalent to Functor#map
over Alternative#separate
Separate this Foldable into a Tuple by an effectful separating function A => H[B, C]
for some Bifoldable[H]
Equivalent to Functor#map
over Alternative#separate
scala> import cats.implicits._, cats.data.Const scala> val list = List(1,2,3,4) scala> list.partitionBifold(a => (a, "value " + a.toString)) res0: (List[Int], List[String]) = (List(1, 2, 3, 4),List(value 1, value 2, value 3, value 4)) `Const`'s second parameter is never instantiated, so we can use an impossible type: scala> list.partitionBifold(a => Const[Int, Nothing with Any](a)) res1: (List[Int], List[Nothing with Any]) = (List(1, 2, 3, 4),List())
Separate this Foldable into a Tuple by an effectful separating function A => G[H[B, C]]
for some Bifoldable[H]
Equivalent to Traverse#traverse
over Alternative#separate
Separate this Foldable into a Tuple by an effectful separating function A => G[H[B, C]]
for some Bifoldable[H]
Equivalent to Traverse#traverse
over Alternative#separate
scala> import cats.implicits._, cats.data.Const scala> val list = List(1,2,3,4) `Const`'s second parameter is never instantiated, so we can use an impossible type: scala> list.partitionBifoldM(a => Option(Const[Int, Nothing with Any](a))) res0: Option[(List[Int], List[Nothing with Any])] = Some((List(1, 2, 3, 4),List()))
Separate this Foldable into a Tuple by an effectful separating function A => G[Either[B, C]]
Equivalent to Traverse#traverse
over Alternative#separate
Separate this Foldable into a Tuple by an effectful separating function A => G[Either[B, C]]
Equivalent to Traverse#traverse
over Alternative#separate
scala> import cats.implicits._, cats.Eval scala> val list = List(1,2,3,4) scala> val partitioned1 = list.partitionEitherM(a => if (a % 2 == 0) Eval.now(Either.left[String, Int](a.toString)) else Eval.now(Either.right[String, Int](a))) Since `Eval.now` yields a lazy computation, we need to force it to inspect the result: scala> partitioned1.value res0: (List[String], List[Int]) = (List(2, 4),List(1, 3)) scala> val partitioned2 = list.partitionEitherM(a => Eval.later(Either.right(a * 4))) scala> partitioned2.value res1: (List[Nothing], List[Int]) = (List(),List(4, 8, 12, 16))