Constructs a lazy Coeval instance.
Constructs a lazy Coeval instance.
This type can be used for "lazy" values. In some sense it is equivalent to using a Function0 value.
The Eager
type represents a strict, already evaluated result
of a Coeval that either resulted in success, wrapped in a
Now, or in an error, wrapped in an Error.
The Eager
type represents a strict, already evaluated result
of a Coeval that either resulted in success, wrapped in a
Now, or in an error, wrapped in an Error.
It's the moral equivalent of scala.util.Try
, except that
application of functions such as map
and flatMap
produces
Coeval references that are still lazily evaluated.
Constructs an eager Coeval instance for a result that represents an error.
Constructs an eager Coeval instance from a strict value that's already known.
Constructs a lazy Coeval instance that gets evaluated only once.
Promotes a non-strict value to a Coeval.
Type class instances of Coeval for Cats.
Promote a non-strict value representing a Coeval
to a Coeval
of the same type.
Alias for eval.
Promote a non-strict value to a Coeval
, catching exceptions in the
process.
Promote a non-strict value to a Coeval
, catching exceptions in the
process.
Note that since Coeval
is not memoized, this will recompute the
value each time the Coeval
is executed.
Promote a non-strict value to a Coeval
that is memoized on the first
evaluation, the result being then available on subsequent evaluations.
Builds a Coeval
out of a cats.Eval
value.
Builds a Coeval
out of a Scala Try
value.
Pairs 2 Coeval
values, applying the given mapping function.
Pairs 2 Coeval
values, applying the given mapping function.
Returns a new Coeval
reference that completes with the result
of mapping that function to their successful results, or in
failure in case either of them fails.
val fa1 = Coeval(1) val fa2 = Coeval(2) // Yields Success(3) Coeval.map2(fa1, fa2) { (a, b) => a + b } // Yields Failure(e), because the second arg is a failure Coeval.map2(fa1, Coeval.raiseError(e)) { (a, b) => a + b }
Pairs 3 Coeval
values, applying the given mapping function.
Pairs 3 Coeval
values, applying the given mapping function.
Returns a new Coeval
reference that completes with the result
of mapping that function to their successful results, or in
failure in case either of them fails.
val fa1 = Coeval(1) val fa2 = Coeval(2) val fa3 = Coeval(3) // Yields Success(6) Coeval.map3(fa1, fa2, fa3) { (a, b, c) => a + b + c } // Yields Failure(e), because the second arg is a failure Coeval.map3(fa1, Coeval.raiseError(e), fa3) { (a, b, c) => a + b + c }
Pairs 4 Coeval
values, applying the given mapping function.
Pairs 4 Coeval
values, applying the given mapping function.
Returns a new Coeval
reference that completes with the result
of mapping that function to their successful results, or in
failure in case either of them fails.
val fa1 = Coeval(1) val fa2 = Coeval(2) val fa3 = Coeval(3) val fa4 = Coeval(4) // Yields Success(10) Coeval.map4(fa1, fa2, fa3, fa4) { (a, b, c, d) => a + b + c + d } // Yields Failure(e), because the second arg is a failure Coeval.map4(fa1, Coeval.raiseError(e), fa3, fa4) { (a, b, c, d) => a + b + c + d }
Pairs 5 Coeval
values, applying the given mapping function.
Pairs 5 Coeval
values, applying the given mapping function.
Returns a new Coeval
reference that completes with the result
of mapping that function to their successful results, or in
failure in case either of them fails.
val fa1 = Coeval(1) val fa2 = Coeval(2) val fa3 = Coeval(3) val fa4 = Coeval(4) val fa5 = Coeval(5) // Yields Success(15) Coeval.map5(fa1, fa2, fa3, fa4, fa5) { (a, b, c, d, e) => a + b + c + d + e } // Yields Failure(e), because the second arg is a failure Coeval.map5(fa1, Coeval.raiseError(e), fa3, fa4, fa5) { (a, b, c, d, e) => a + b + c + d + e }
Pairs 6 Coeval
values, applying the given mapping function.
Pairs 6 Coeval
values, applying the given mapping function.
Returns a new Coeval
reference that completes with the result
of mapping that function to their successful results, or in
failure in case either of them fails.
val fa1 = Coeval(1) val fa2 = Coeval(2) val fa3 = Coeval(3) val fa4 = Coeval(4) val fa5 = Coeval(5) val fa6 = Coeval(6) // Yields Success(21) Coeval.map6(fa1, fa2, fa3, fa4, fa5, fa6) { (a, b, c, d, e, f) => a + b + c + d + e + f } // Yields Failure(e), because the second arg is a failure Coeval.map6(fa1, Coeval.raiseError(e), fa3, fa4, fa5, fa6) { (a, b, c, d, e, f) => a + b + c + d + e + f }
Returns a Coeval
that on execution is always successful, emitting
the given strict value.
Lifts a value into the coeval context.
Lifts a value into the coeval context. Alias for now.
Returns a Coeval
that on execution is always finishing in error
emitting the specified exception.
Transforms a TraversableOnce
of coevals into a coeval producing
the same collection of gathered results.
Transforms a TraversableOnce
of coevals into a coeval producing
the same collection of gathered results.
It's a simple version of traverse.
Alias for defer.
Keeps calling f
until it returns a Right
result.
Keeps calling f
until it returns a Right
result.
Based on Phil Freeman's Stack Safety for Free.
Transforms a TraversableOnce[A]
into a coeval of the same collection
using the provided function A => Coeval[B]
.
Transforms a TraversableOnce[A]
into a coeval of the same collection
using the provided function A => Coeval[B]
.
It's a generalized version of sequence.
A Coeval[Unit]
provided for convenience.
Pairs two Coeval instances.
Pairs three Coeval instances.
Pairs four Coeval instances.
Pairs five Coeval instances.
Pairs six Coeval instances.
Zips together multiple Coeval instances.
Coeval builders.