trait TraverseFilter[F[_]] extends FunctorFilter[F]
TraverseFilter
, also known as Witherable
, represents list-like structures
that can essentially have a traverse
and a filter
applied as a single
combined operation (traverseFilter
).
Based on Haskell's Data.Witherable
- Source
- TraverseFilter.scala
- Alphabetic
- By Inheritance
- TraverseFilter
- FunctorFilter
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def traverse: Traverse[F]
- abstract def traverseFilter[G[_], A, B](fa: F[A])(f: (A) => G[Option[B]])(implicit G: Applicative[G]): G[F[B]]
A combined traverse and filter.
A combined traverse and filter. Filtering is handled via
Option
instead ofBoolean
such that the output typeB
can be different than the input typeA
.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): Eval[Option[String]] = Now(m.get(i)) scala> val result: Eval[List[String]] = l.traverseFilter(asString) scala> result.value res0: List[String] = List(one, three)
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- 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)
- Definition Classes
- FunctorFilter
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- 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 predicatef
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 predicatef
but none that don't.- Definition Classes
- FunctorFilter
- def filterA[G[_], A](fa: F[A])(f: (A) => G[Boolean])(implicit G: Applicative[G]): G[F[A]]
Filter values inside a
G
context.Filter values inside a
G
context.This is a generalized version of Haskell's filterM. This StackOverflow question about
filterM
may be helpful in understanding how it behaves.Example:
scala> import cats.implicits._ scala> val l: List[Int] = List(1, 2, 3, 4) scala> def odd(i: Int): Eval[Boolean] = Now(i % 2 == 1) scala> val res: Eval[List[Int]] = l.filterA(odd) scala> res.value res0: List[Int] = List(1, 3) scala> List(1, 2, 3).filterA(_ => List(true, false)) res1: List[List[Int]] = List(List(1, 2, 3), List(1, 2), List(1, 3), List(1), List(2, 3), List(2), List(3), List())
- 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 predicatef
.Apply a filter to a structure such that the output structure contains all
A
elements in the input structure that do not satisfy the predicatef
.- Definition Classes
- FunctorFilter
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def flattenOption[A](fa: F[Option[A]]): F[A]
"Flatten" out a structure by collapsing
Option
s."Flatten" out a structure by collapsing
Option
s. Equivalent to usingmapFilter
withidentity
.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)
- Definition Classes
- FunctorFilter
- final def functor: Functor[F]
- Definition Classes
- TraverseFilter → FunctorFilter
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashDistinct[A](fa: F[A])(implicit H: Hash[A]): F[A]
Removes duplicate elements from a list, keeping only the first occurrence.
Removes duplicate elements from a list, keeping only the first occurrence. This is usually faster than ordDistinct, especially for things that have a slow comparion (like String).
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def mapFilter[A, B](fa: F[A])(f: (A) => Option[B]): F[B]
A combined
map
andfilter
.A combined
map
andfilter
. Filtering is handled viaOption
instead ofBoolean
such that the output typeB
can be different than the input typeA
.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)
- Definition Classes
- TraverseFilter → FunctorFilter
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def ordDistinct[A](fa: F[A])(implicit O: Order[A]): F[A]
Removes duplicate elements from a list, keeping only the first occurrence.
- def sequenceFilter[G[_], A](fgoa: F[G[Option[A]]])(implicit G: Applicative[G]): G[F[A]]
scala> import cats.implicits._ scala> val a: List[Either[String, Option[Int]]] = List(Right(Some(1)), Right(Some(5)), Right(Some(3))) scala> val b: Either[String, List[Int]] = TraverseFilter[List].sequenceFilter(a) b: Either[String, List[Int]] = Right(List(1, 5, 3))
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def traverseCollect[G[_], A, B](fa: F[A])(f: PartialFunction[A, G[B]])(implicit G: Applicative[G]): G[F[B]]
A combined traverse and collect.
A combined traverse and collect.
scala> import cats.implicits._ scala> val m: Map[Int, String] = Map(1 -> "one", 2 -> "two") scala> val l: List[Int] = List(1, 2, 3, 4) scala> def asString: PartialFunction[Int, Eval[Option[String]]] = { case n if n % 2 == 0 => Now(m.get(n)) } scala> val result: Eval[List[Option[String]]] = l.traverseCollect(asString) scala> result.value res0: List[Option[String]] = List(Some(two), None)
- def traverseEither[G[_], A, B, E](fa: F[A])(f: (A) => G[Either[E, B]])(g: (A, E) => G[Unit])(implicit G: Monad[G]): G[F[B]]
Like traverseFilter, but uses
Either
instead ofOption
and allows for an action to be run on each filtered value. - final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()