A combined map and filter. Filtering is handled via Option
instead of Boolean
such that the output type B
can be different than
the input type A
.
Example:
scala> import cats.implicits._ scala> val m: Map[Int, String] = Map(1 -> "one", 3 -> "three") scala> val l: List[Int] = List(1, 2, 3, 4) scala> def asString(i: Int): Option[String] = m.get(i) scala> l.mapFilter(i => m.get(i)) res0: List[String] = List(one, three)
Replaces the A
value in F[A]
with the supplied value.
Replaces the A
value in F[A]
with the supplied value.
Similar to mapFilter but uses a partial function instead of a function
that returns an Option
.
Similar to mapFilter but uses a partial function instead of a function
that returns an Option
.
Example:
scala> import cats.implicits._ scala> val l: List[Int] = List(1, 2, 3, 4) scala> FunctorFilter[List].collect(l){ | case 1 => "one" | case 3 => "three" | } res0: List[String] = List(one, three)
Apply a filter to a structure such that the output structure contains all
A
elements in the input structure that satisfy the predicate f
but none
that don't.
"Flatten" out a structure by collapsing Option
s.
"Flatten" out a structure by collapsing Option
s.
Example:
scala> import cats.implicits._ scala> val l: List[Option[Int]] = List(Some(1), None, Some(3), None) scala> l.flattenOption res0: List[Int] = List(1, 3)
Tuple the values in fa with the result of applying a function with the value
Tuple the values in fa with the result of applying a function with the value
Lift a function f to operate on Functors
Lift a function f to operate on Functors
Empty the fa of the values, preserving the structure
Empty the fa of the values, preserving the structure
Lifts natural subtyping covariance of covariant Functors.
Lifts natural subtyping covariance of covariant Functors.
NOTE: In certain (perhaps contrived) situations that rely on universal
equality this can result in a ClassCastException
, because it is
implemented as a type cast. It could be implemented as map(identity)
, but
according to the functor laws, that should be equal to fa
, and a type
cast is often much more performant.
See this example
of widen
creating a ClassCastException
.