abstract class NonEmptyReducible[F[_], G[_]] extends Reducible[F]
This class defines a Reducible[F]
in terms of a Foldable[G]
together with a split
method, F[A]
=> (A, G[A])
.
This class can be used on any type where the first value (A
) and
the "rest" of the values (G[A]
) can be easily found.
- Alphabetic
- By Inheritance
- NonEmptyReducible
- Reducible
- Foldable
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
- abstract def split[A](fa: F[A]): (A, G[A])
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[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
combineAll[A](fa: F[A])(implicit arg0: Monoid[A]): A
Alias for fold.
-
def
compose[G[_]](implicit arg0: Reducible[G]): Reducible[[α]F[G[α]]]
- Definition Classes
- Reducible
-
def
compose[G[_]](implicit arg0: Foldable[G]): Foldable[[α]F[G[α]]]
- Definition Classes
- Foldable
-
def
dropWhile_[A](fa: F[A])(p: (A) ⇒ Boolean): List[A]
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
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
exists[A](fa: F[A])(p: (A) ⇒ Boolean): Boolean
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
-
def
filter_[A](fa: F[A])(p: (A) ⇒ Boolean): List[A]
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
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
find[A](fa: F[A])(f: (A) ⇒ Boolean): Option[A]
Find the first element matching the predicate, if one exists.
Find the first element matching the predicate, if one exists.
- Definition Classes
- Foldable
-
def
fold[A](fa: F[A])(implicit A: Monoid[A]): A
Fold implemented using the given Monoid[A] instance.
Fold implemented using the given Monoid[A] instance.
- Definition Classes
- Foldable
-
def
foldK[G[_], A](fga: F[G[A]])(implicit G: MonoidK[G]): G[A]
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 aMonoid[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
-
def
foldLeft[A, B](fa: F[A], b: B)(f: (B, A) ⇒ B): B
Left associative fold on 'F' using the function 'f'.
Left associative fold on 'F' using the function 'f'.
- Definition Classes
- NonEmptyReducible → Foldable
-
def
foldM[G[_], A, B](fa: F[A], z: B)(f: (B, A) ⇒ G[B])(implicit G: Monad[G]): G[B]
Left associative monadic folding on
F
.Left associative monadic folding on
F
.The default implementation of this is based on
foldLeft
, and thus will always fold across the entire structure. Certain structures are able to implement this in such a way that folds can be short-circuited (not traverse the entirety of the structure), depending on theG
result produced at a given step.- Definition Classes
- Foldable
-
def
foldMap[A, B](fa: F[A])(f: (A) ⇒ B)(implicit B: Monoid[B]): B
Fold implemented by mapping
A
values intoB
and then combining them using the givenMonoid[B]
instance.Fold implemented by mapping
A
values intoB
and then combining them using the givenMonoid[B]
instance.- Definition Classes
- Foldable
-
def
foldRight[A, B](fa: F[A], lb: Eval[B])(f: (A, Eval[B]) ⇒ Eval[B]): Eval[B]
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
- NonEmptyReducible → Foldable
-
def
forall[A](fa: F[A])(p: (A) ⇒ Boolean): Boolean
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
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
def
isEmpty[A](fa: F[A]): Boolean
Returns true if there are no elements.
Returns true if there are no elements. Otherwise false.
- Definition Classes
- Foldable
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
maximum[A](fa: F[A])(implicit A: Order[A]): A
- Definition Classes
- Reducible
-
def
maximumOption[A](fa: F[A])(implicit A: Order[A]): Option[A]
Find the maximum
A
item in this structure according to theOrder[A]
.Find the maximum
A
item in this structure according to theOrder[A]
.- returns
None
if the structure is empty, otherwise the maximum element wrapped in aSome
.
- 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.
-
def
minimum[A](fa: F[A])(implicit A: Order[A]): A
- Definition Classes
- Reducible
-
def
minimumOption[A](fa: F[A])(implicit A: Order[A]): Option[A]
Find the minimum
A
item in this structure according to theOrder[A]
.Find the minimum
A
item in this structure according to theOrder[A]
.- returns
None
if the structure is empty, otherwise the minimum element wrapped in aSome
.
- 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.
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
nonEmpty[A](fa: F[A]): Boolean
- Definition Classes
- Foldable
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
reduce[A](fa: F[A])(implicit A: Semigroup[A]): A
Reduce a
F[A]
value using the givenSemigroup[A]
.Reduce a
F[A]
value using the givenSemigroup[A]
.- Definition Classes
- Reducible
-
def
reduceK[G[_], A](fga: F[G[A]])(implicit G: SemigroupK[G]): G[A]
Reduce a
F[G[A]]
value usingSemigroupK[G]
, a universal semigroup forG[_]
.Reduce a
F[G[A]]
value usingSemigroupK[G]
, a universal semigroup forG[_]
.This method is a generalization of
reduce
.- Definition Classes
- Reducible
-
def
reduceLeft[A](fa: F[A])(f: (A, A) ⇒ A): A
Left-associative reduction on
F
using the functionf
.Left-associative reduction on
F
using the functionf
.Implementations should override this method when possible.
- Definition Classes
- Reducible
-
def
reduceLeftM[G[_], A, B](fa: F[A])(f: (A) ⇒ G[B])(g: (B, A) ⇒ G[B])(implicit G: FlatMap[G]): G[B]
Monadic variant of reduceLeftTo
Monadic variant of reduceLeftTo
- Definition Classes
- Reducible
-
def
reduceLeftOption[A](fa: F[A])(f: (A, A) ⇒ A): Option[A]
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 thef
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.
-
def
reduceLeftTo[A, B](fa: F[A])(f: (A) ⇒ B)(g: (B, A) ⇒ B): B
Apply
f
to the "initial element" offa
and combine it with every other value using the given functiong
.Apply
f
to the "initial element" offa
and combine it with every other value using the given functiong
.- Definition Classes
- NonEmptyReducible → Reducible
-
def
reduceLeftToOption[A, B](fa: F[A])(f: (A) ⇒ B)(g: (B, A) ⇒ B): Option[B]
Overriden from Foldable[_] for efficiency.
-
def
reduceMap[A, B](fa: F[A])(f: (A) ⇒ B)(implicit B: Semigroup[B]): B
Apply
f
to each element offa
and combine them using the givenSemigroup[B]
.Apply
f
to each element offa
and combine them using the givenSemigroup[B]
.- Definition Classes
- Reducible
-
def
reduceRight[A](fa: F[A])(f: (A, Eval[A]) ⇒ Eval[A]): Eval[A]
Right-associative reduction on
F
using the functionf
.Right-associative reduction on
F
using the functionf
.- Definition Classes
- Reducible
-
def
reduceRightOption[A](fa: F[A])(f: (A, Eval[A]) ⇒ Eval[A]): Eval[Option[A]]
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 thef
operation over theA
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
-
def
reduceRightTo[A, B](fa: F[A])(f: (A) ⇒ B)(g: (A, Eval[B]) ⇒ Eval[B]): Eval[B]
Apply
f
to the "initial element" offa
and lazily combine it with every other value using the given functiong
.Apply
f
to the "initial element" offa
and lazily combine it with every other value using the given functiong
.- Definition Classes
- NonEmptyReducible → Reducible
-
def
reduceRightToOption[A, B](fa: F[A])(f: (A) ⇒ B)(g: (A, Eval[B]) ⇒ Eval[B]): Eval[Option[B]]
Overriden from
Foldable[_]
for efficiency. -
def
sequence1_[G[_], A](fga: F[G[A]])(implicit G: Apply[G]): G[Unit]
Sequence
F[G[A]]
usingApply[G]
.Sequence
F[G[A]]
usingApply[G]
.This method is similar to Foldable.sequence_ but requires only an Apply instance for
G
instead of Applicative. See the traverse1_ documentation for a description of the differences.- Definition Classes
- Reducible
-
def
sequenceU_[GA](fa: F[GA])(implicit U: Unapply[Applicative, GA]): M[Unit]
Behaves like sequence_, but uses Unapply to find the Applicative instance for
G
- used whenG
is a type constructor with two or more parameters such as scala.util.EitherBehaves like sequence_, but uses Unapply to find the Applicative instance for
G
- used whenG
is a type constructor with two or more parameters such as scala.util.Eitherscala> 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 ofsequenceU_
would not compile without explicitly passing in the type parameters - the type checker has trouble inferring the appropriate instance.- Definition Classes
- Foldable
-
def
sequence_[G[_], A](fga: F[G[A]])(implicit arg0: Applicative[G]): G[Unit]
Sequence
F[G[A]]
usingApplicative[G]
.Sequence
F[G[A]]
usingApplicative[G]
.This is similar to
traverse_
except it operates onF[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
-
def
size[A](fa: F[A]): Long
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
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
takeWhile_[A](fa: F[A])(p: (A) ⇒ Boolean): List[A]
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
-
def
toList[A](fa: F[A]): List[A]
Convert F[A] to a List[A].
Convert F[A] to a List[A].
- Definition Classes
- Foldable
-
def
toNonEmptyList[A](fa: F[A]): NonEmptyList[A]
- Definition Classes
- Reducible
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
traverse1_[G[_], A, B](fa: F[A])(f: (A) ⇒ G[B])(implicit G: Apply[G]): G[Unit]
Traverse
F[A]
usingApply[G]
.Traverse
F[A]
usingApply[G]
.A
values will be mapped intoG[B]
and combined usingApplicative#map2
.This method is similar to Foldable.traverse_. There are two main differences:
1. We only need an Apply instance for
G
here, since we don't need to call Applicative.pure for a starting value. 2. This performs a strict left-associative traversal and thus must always traverse the entire data structure. Prefer Foldable.traverse_ if you have an Applicative instance available forG
and want to take advantage of short-circuiting the traversal.- Definition Classes
- Reducible
-
def
traverseU_[A, GB](fa: F[A])(f: (A) ⇒ GB)(implicit U: Unapply[Applicative, GB]): M[Unit]
Behaves like traverse_, but uses Unapply to find the Applicative instance for
G
- used whenG
is a type constructor with two or more parameters such as scala.util.EitherBehaves like traverse_, but uses Unapply to find the Applicative instance for
G
- used whenG
is a type constructor with two or more parameters such as scala.util.Eitherscala> 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 oftraverseU_
would not compile without explicitly passing in the type parameters - the type checker has trouble inferring the appropriate instance.- Definition Classes
- Foldable
-
def
traverse_[G[_], A, B](fa: F[A])(f: (A) ⇒ G[B])(implicit G: Applicative[G]): G[Unit]
Traverse
F[A]
usingApplicative[G]
.Traverse
F[A]
usingApplicative[G]
.A
values will be mapped intoG[B]
and combined usingApplicative#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 specificA
aspect ofG[A]
is not otherwise needed.- Definition Classes
- Foldable
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )