FunctorFilter

@implicitNotFound("Could not find an instance of FunctorFilter for ${F}") @typeclass trait FunctorFilter[F[_]] extends Serializable

FunctorFilter[F] allows you to map and filter out elements simultaneously.

FunctorFilter[F] allows you to map and filter out elements simultaneously.

Companion
object
trait Serializable
class Object
trait Matchable
class Any

Value members

Abstract methods

def functor: Functor[F]
def mapFilter[A, B](fa: F[A])(f: A => Option[B]): F[B]

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.

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(asString)
res0: List[String] = List(one, three)

Concrete methods

def collect[A, B](fa: F[A])(f: PartialFunction[A, B]): F[B]

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)
def filter[A](fa: F[A])(f: A => Boolean): F[A]

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.

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.

def filterNot[A](fa: F[A])(f: A => Boolean): F[A]

Apply a filter to a structure such that the output structure contains all A elements in the input structure that do not satisfy the predicate f.

Apply a filter to a structure such that the output structure contains all A elements in the input structure that do not satisfy the predicate f.

def flattenOption[A](fa: F[Option[A]]): F[A]

"Flatten" out a structure by collapsing Options. Equivalent to using mapFilter with identity.

"Flatten" out a structure by collapsing Options. Equivalent to using mapFilter with identity.

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)