Trait/Object

cats

Traverse

Related Docs: object Traverse | package cats

Permalink

trait Traverse[F[_]] extends Functor[F] with Foldable[F] with Serializable

Traverse, also known as Traversable.

Traversal over a structure with an effect.

Traversing with the cats.Id effect is equivalent to cats.Functor#map. Traversing with the cats.data.Const effect where the first type parameter has a cats.Monoid instance is equivalent to cats.Foldable#fold.

See: The Essence of the Iterator Pattern

Self Type
Traverse[F]
Linear Supertypes
Foldable[F], Functor[F], Invariant[F], Serializable, Serializable, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Traverse
  2. Foldable
  3. Functor
  4. Invariant
  5. Serializable
  6. Serializable
  7. AnyRef
  8. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def foldLeft[A, B](fa: F[A], b: B)(f: (B, A) ⇒ B): B

    Permalink

    Left associative fold on 'F' using the function 'f'.

    Left associative fold on 'F' using the function 'f'.

    Definition Classes
    Foldable
  2. abstract def foldRight[A, B](fa: F[A], lb: Eval[B])(f: (A, Eval[B]) ⇒ Eval[B]): Eval[B]

    Permalink

    Right associative lazy fold on F using the folding function 'f'.

    Right associative lazy fold on F using the folding function 'f'.

    This method evaluates lb lazily (in some cases it will not be needed), and returns a lazy value. We are using (A, Eval[B]) => Eval[B] to support laziness in a stack-safe way. Chained computation should be performed via .map and .flatMap.

    For more detailed information about how this method works see the documentation for Eval[_].

    Definition Classes
    Foldable
  3. abstract def traverse[G[_], A, B](fa: F[A])(f: (A) ⇒ G[B])(implicit arg0: Applicative[G]): G[F[B]]

    Permalink

    Given a function which returns a G effect, thread this effect through the running of this function on all the values in F, returning an F[B] in a G context.

    Given a function which returns a G effect, thread this effect through the running of this function on all the values in F, returning an F[B] in a G context.

    Example:

    scala> import cats.implicits._
    scala> def parseInt(s: String): Option[Int] = Either.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

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def as[A, B](fa: F[A], b: B): F[B]

    Permalink

    Replaces the A value in F[A] with the supplied value.

    Replaces the A value in F[A] with the supplied value.

    Definition Classes
    Functor
  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. def combineAll[A](fa: F[A])(implicit arg0: Monoid[A]): A

    Permalink

    Alias for fold.

    Alias for fold.

    Definition Classes
    Foldable
  8. def compose[G[_]](implicit arg0: Traverse[G]): Traverse[[α]F[G[α]]]

    Permalink
  9. def compose[G[_]](implicit arg0: Foldable[G]): Foldable[[α]F[G[α]]]

    Permalink
    Definition Classes
    Foldable
  10. def compose[G[_]](implicit arg0: Functor[G]): Functor[[α]F[G[α]]]

    Permalink
    Definition Classes
    Functor
  11. def compose[G[_]](implicit arg0: Invariant[G]): Invariant[[α]F[G[α]]]

    Permalink
    Definition Classes
    Invariant
  12. def composeContravariant[G[_]](implicit arg0: Contravariant[G]): Contravariant[[α]F[G[α]]]

    Permalink
    Definition Classes
    FunctorInvariant
  13. def composeFilter[G[_]](implicit arg0: TraverseFilter[G]): TraverseFilter[[α]F[G[α]]]

    Permalink
  14. def composeFilter[G[_]](implicit arg0: FunctorFilter[G]): FunctorFilter[[α]F[G[α]]]

    Permalink
    Definition Classes
    Functor
  15. def composeFunctor[G[_]](implicit arg0: Functor[G]): Invariant[[α]F[G[α]]]

    Permalink
    Definition Classes
    Invariant
  16. def dropWhile_[A](fa: F[A])(p: (A) ⇒ Boolean): List[A]

    Permalink

    Convert F[A] to a List[A], dropping all initial elements which match p.

    Convert F[A] to a List[A], dropping all initial elements which match p.

    Definition Classes
    Foldable
  17. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  18. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  19. def exists[A](fa: F[A])(p: (A) ⇒ Boolean): Boolean

    Permalink

    Check whether at least one element satisfies the predicate.

    Check whether at least one element satisfies the predicate.

    If there are no elements, the result is false.

    Definition Classes
    Foldable
  20. def filter_[A](fa: F[A])(p: (A) ⇒ Boolean): List[A]

    Permalink

    Convert F[A] to a List[A], only including elements which match p.

    Convert F[A] to a List[A], only including elements which match p.

    Definition Classes
    Foldable
  21. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  22. def find[A](fa: F[A])(f: (A) ⇒ Boolean): Option[A]

    Permalink

    Find the first element matching the predicate, if one exists.

    Find the first element matching the predicate, if one exists.

    Definition Classes
    Foldable
  23. def fold[A](fa: F[A])(implicit A: Monoid[A]): A

    Permalink

    Fold implemented using the given Monoid[A] instance.

    Fold implemented using the given Monoid[A] instance.

    Definition Classes
    Foldable
  24. def foldK[G[_], A](fga: F[G[A]])(implicit G: MonoidK[G]): G[A]

    Permalink

    Fold implemented using the given MonoidK[G] instance.

    Fold implemented using the given MonoidK[G] instance.

    This method is identical to fold, except that we use the universal monoid (MonoidK[G]) to get a Monoid[G[A]] instance.

    For example:

    scala> import cats.implicits._
    scala> val F = Foldable[List]
    scala> F.foldK(List(1 :: 2 :: Nil, 3 :: 4 :: 5 :: Nil))
    res0: List[Int] = List(1, 2, 3, 4, 5)
    Definition Classes
    Foldable
  25. def foldM[G[_], A, B](fa: F[A], z: B)(f: (B, A) ⇒ G[B])(implicit G: Monad[G]): G[B]

    Permalink

    Left associative monadic folding on F.

    Left associative monadic folding on F.

    Definition Classes
    Foldable
  26. def foldMap[A, B](fa: F[A])(f: (A) ⇒ B)(implicit B: Monoid[B]): B

    Permalink

    Fold implemented by mapping A values into B and then combining them using the given Monoid[B] instance.

    Fold implemented by mapping A values into B and then combining them using the given Monoid[B] instance.

    Definition Classes
    Foldable
  27. def forall[A](fa: F[A])(p: (A) ⇒ Boolean): Boolean

    Permalink

    Check whether all elements satisfy the predicate.

    Check whether all elements satisfy the predicate.

    If there are no elements, the result is true.

    Definition Classes
    Foldable
  28. def fproduct[A, B](fa: F[A])(f: (A) ⇒ B): F[(A, B)]

    Permalink

    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

    Definition Classes
    Functor
  29. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  30. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  31. def imap[A, B](fa: F[A])(f: (A) ⇒ B)(fi: (B) ⇒ A): F[B]

    Permalink
    Definition Classes
    FunctorInvariant
  32. def isEmpty[A](fa: F[A]): Boolean

    Permalink

    Returns true if there are no elements.

    Returns true if there are no elements. Otherwise false.

    Definition Classes
    Foldable
  33. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  34. def lift[A, B](f: (A) ⇒ B): (F[A]) ⇒ F[B]

    Permalink

    Lift a function f to operate on Functors

    Lift a function f to operate on Functors

    Definition Classes
    Functor
  35. def map[A, B](fa: F[A])(f: (A) ⇒ B): F[B]

    Permalink
    Definition Classes
    TraverseFunctor
  36. def maximumOption[A](fa: F[A])(implicit A: Order[A]): Option[A]

    Permalink

    Find the maximum A item in this structure according to the Order[A].

    Find the maximum A item in this structure according to the Order[A].

    returns

    None if the structure is empty, otherwise the maximum element wrapped in a Some.

    Definition Classes
    Foldable
    See also

    minimumOption for minimum instead of maximum.

    Reducible#maximum for a version that doesn't need to return an Option for structures that are guaranteed to be non-empty.

  37. def minimumOption[A](fa: F[A])(implicit A: Order[A]): Option[A]

    Permalink

    Find the minimum A item in this structure according to the Order[A].

    Find the minimum A item in this structure according to the Order[A].

    returns

    None if the structure is empty, otherwise the minimum element wrapped in a Some.

    Definition Classes
    Foldable
    See also

    maximumOption for maximum instead of minimum.

    Reducible#minimum for a version that doesn't need to return an Option for structures that are guaranteed to be non-empty.

  38. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  39. def nonEmpty[A](fa: F[A]): Boolean

    Permalink
    Definition Classes
    Foldable
  40. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  41. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  42. def reduceLeftOption[A](fa: F[A])(f: (A, A) ⇒ A): Option[A]

    Permalink

    Reduce the elements of this structure down to a single value by applying the provided aggregation function in a left-associative manner.

    Reduce the elements of this structure down to a single value by applying the provided aggregation function in a left-associative manner.

    returns

    None if the structure is empty, otherwise the result of combining the cumulative left-associative result of the f operation over all of the elements.

    Definition Classes
    Foldable
    See also

    Reducible#reduceLeft for a version that doesn't need to return an Option for structures that are guaranteed to be non-empty. Example:

    scala> import cats.implicits._
    scala> val l = List(6, 3, 2)
    This is equivalent to (6 - 3) - 2
    scala> Foldable[List].reduceLeftOption(l)(_ - _)
    res0: Option[Int] = Some(1)
    scala> Foldable[List].reduceLeftOption(List.empty[Int])(_ - _)
    res1: Option[Int] = None

    reduceRightOption for a right-associative alternative.

  43. def reduceLeftToOption[A, B](fa: F[A])(f: (A) ⇒ B)(g: (B, A) ⇒ B): Option[B]

    Permalink
    Definition Classes
    Foldable
  44. def reduceRightOption[A](fa: F[A])(f: (A, Eval[A]) ⇒ Eval[A]): Eval[Option[A]]

    Permalink

    Reduce the elements of this structure down to a single value by applying the provided aggregation function in a right-associative manner.

    Reduce the elements of this structure down to a single value by applying the provided aggregation function in a right-associative manner.

    returns

    None if the structure is empty, otherwise the result of combining the cumulative right-associative result of the f operation over the A elements.

    Definition Classes
    Foldable
    See also

    Reducible#reduceRight for a version that doesn't need to return an Option for structures that are guaranteed to be non-empty. Example:

    scala> import cats.implicits._
    scala> val l = List(6, 3, 2)
    This is eqivalent to 6 - (3 - 2)
    scala> Foldable[List].reduceRightOption(l)((current, rest) => rest.map(current - _)).value
    res0: Option[Int] = Some(5)
    scala> Foldable[List].reduceRightOption(List.empty[Int])((current, rest) => rest.map(current - _)).value
    res1: Option[Int] = None

    reduceLeftOption for a left-associative alternative

  45. def reduceRightToOption[A, B](fa: F[A])(f: (A) ⇒ B)(g: (A, Eval[B]) ⇒ Eval[B]): Eval[Option[B]]

    Permalink
    Definition Classes
    Foldable
  46. def sequence[G[_], A](fga: F[G[A]])(implicit arg0: Applicative[G]): G[F[A]]

    Permalink

    Thread all the G effects through the F structure to invert the structure from F[G[A]] to G[F[A]].

    Thread all the G effects through the F structure to invert the structure from F[G[A]] to G[F[A]].

    Example:

    scala> import cats.implicits._
    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
  47. def sequenceU[GA](fga: F[GA])(implicit U: Unapply[Applicative, GA]): M[F[A]]

    Permalink

    Behaves just like sequence, but uses Unapply to find the Applicative instance for G.

    Behaves just like sequence, but uses Unapply to find the Applicative instance for G.

    Example:

    scala> import cats.data.{Validated, ValidatedNel}
    scala> import cats.implicits._
    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(NonEmptyList(a, b))
    scala> x.sequence[ValidatedNel[String, ?], Int]
    res1: cats.data.ValidatedNel[String,List[Int]] = Invalid(NonEmptyList(a, b))
  48. def sequenceU_[GA](fa: F[GA])(implicit U: Unapply[Applicative, GA]): M[Unit]

    Permalink

    Behaves like sequence_, but uses Unapply to find the Applicative instance for G - used when G is a type constructor with two or more parameters such as scala.util.Either

    Behaves like sequence_, but uses Unapply to find the Applicative instance for G - used when G is a type constructor with two or more parameters such as scala.util.Either

    scala> import cats.implicits._
    scala> val F = Foldable[List]
    scala> F.sequenceU_(List(Either.right[String, Int](333), Right(444)))
    res0: Either[String, Unit] = Right(())
    scala> F.sequenceU_(List(Either.right[String, Int](333), Left("boo")))
    res1: Either[String, Unit] = Left(boo)

    Note that using sequence_ instead of sequenceU_ would not compile without explicitly passing in the type parameters - the type checker has trouble inferring the appropriate instance.

    Definition Classes
    Foldable
  49. def sequence_[G[_], A](fga: F[G[A]])(implicit arg0: Applicative[G]): G[Unit]

    Permalink

    Sequence F[G[A]] using Applicative[G].

    Sequence F[G[A]] using Applicative[G].

    This is similar to traverse_ except it operates on F[G[A]] values, so no additional functions are needed.

    For example:

    scala> import cats.implicits._
    scala> val F = Foldable[List]
    scala> F.sequence_(List(Option(1), Option(2), Option(3)))
    res0: Option[Unit] = Some(())
    scala> F.sequence_(List(Option(1), None, Option(3)))
    res1: Option[Unit] = None
    Definition Classes
    Foldable
  50. def size[A](fa: F[A]): Long

    Permalink

    The size of this Foldable.

    The size of this Foldable.

    This is overriden in structures that have more efficient size implementations (e.g. Vector, Set, Map).

    Note: will not terminate for infinite-sized collections.

    Definition Classes
    Foldable
  51. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  52. def takeWhile_[A](fa: F[A])(p: (A) ⇒ Boolean): List[A]

    Permalink

    Convert F[A] to a List[A], retaining only initial elements which match p.

    Convert F[A] to a List[A], retaining only initial elements which match p.

    Definition Classes
    Foldable
  53. def toList[A](fa: F[A]): List[A]

    Permalink

    Convert F[A] to a List[A].

    Convert F[A] to a List[A].

    Definition Classes
    Foldable
  54. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  55. def traverseM[G[_], A, B](fa: F[A])(f: (A) ⇒ G[F[B]])(implicit G: Applicative[G], F: FlatMap[F]): G[F[B]]

    Permalink

    A traverse followed by flattening the inner result.

    A traverse followed by flattening the inner result.

    Example:

    scala> import cats.implicits._
    scala> def parseInt(s: String): Option[Int] = Either.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))
  56. def traverseU[A, GB](fa: F[A])(f: (A) ⇒ GB)(implicit U: Unapply[Applicative, GB]): M[F[A]]

    Permalink

    Behaves just like traverse, but uses Unapply to find the Applicative instance for G.

    Behaves just like traverse, but uses Unapply to find the Applicative instance for G.

    Example:

    scala> import cats.implicits._
    scala> def parseInt(s: String): Either[String, Int] = Either.catchOnly[NumberFormatException](s.toInt).leftMap(_ => "no number")
    scala> val ns = List("1", "2", "3")
    scala> ns.traverseU(parseInt)
    res0: Either[String, List[Int]] = Right(List(1, 2, 3))
    scala> ns.traverse[Either[String, ?], Int](parseInt)
    res1: Either[String, List[Int]] = Right(List(1, 2, 3))
  57. def traverseU_[A, GB](fa: F[A])(f: (A) ⇒ GB)(implicit U: Unapply[Applicative, GB]): M[Unit]

    Permalink

    Behaves like traverse_, but uses Unapply to find the Applicative instance for G - used when G is a type constructor with two or more parameters such as scala.util.Either

    Behaves like traverse_, but uses Unapply to find the Applicative instance for G - used when G is a type constructor with two or more parameters such as scala.util.Either

    scala> import cats.implicits._
    scala> def parseInt(s: String): Either[String, Int] =
         |   try { Right(s.toInt) }
         |   catch { case _: NumberFormatException => Left("boo") }
    scala> val F = Foldable[List]
    scala> F.traverseU_(List("333", "444"))(parseInt)
    res0: Either[String, Unit] = Right(())
    scala> F.traverseU_(List("333", "zzz"))(parseInt)
    res1: Either[String, Unit] = Left(boo)

    Note that using traverse_ instead of traverseU_ would not compile without explicitly passing in the type parameters - the type checker has trouble inferring the appropriate instance.

    Definition Classes
    Foldable
  58. def traverse_[G[_], A, B](fa: F[A])(f: (A) ⇒ G[B])(implicit G: Applicative[G]): G[Unit]

    Permalink

    Traverse F[A] using Applicative[G].

    Traverse F[A] using Applicative[G].

    A values will be mapped into G[B] and combined using Applicative#map2.

    For example:

    scala> import cats.implicits._
    scala> def parseInt(s: String): Option[Int] = Either.catchOnly[NumberFormatException](s.toInt).toOption
    scala> val F = Foldable[List]
    scala> F.traverse_(List("333", "444"))(parseInt)
    res0: Option[Unit] = Some(())
    scala> F.traverse_(List("333", "zzz"))(parseInt)
    res1: Option[Unit] = None

    This method is primarily useful when G[_] represents an action or effect, and the specific A aspect of G[A] is not otherwise needed.

    Definition Classes
    Foldable
  59. def void[A](fa: F[A]): F[Unit]

    Permalink

    Empty the fa of the values, preserving the structure

    Empty the fa of the values, preserving the structure

    Definition Classes
    Functor
  60. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  61. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  62. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  63. def widen[A, B >: A](fa: F[A]): F[B]

    Permalink

    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.

    Definition Classes
    Functor

Inherited from Foldable[F]

Inherited from Functor[F]

Inherited from Invariant[F]

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped